Я пытаюсь использовать переменную listID в строке response.redirect вне функции запроса.Это происходит из-за возврата идентификатора из запроса postgreSQL.listID продолжает возвращаться неопределенным, и я получаю сообщение об ошибке «[ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту».Я получаю то же самое, что не могу установить ошибку заголовков, если я перемещаю response.redirect внутри функции запроса.
Буду очень признателен, если кто-то конкретно укажет, что я ошибаюсь, и в идеале предоставит код, чтобы это исправить.Я новичок здесь - все еще нахожу свой путь вокруг понятий.Большое спасибо!
function formSubmit(request, response) {
// Start with an empty array of errors
const contextData = {
title: 'Add listing',
salutation: 'Please fill out the information below to post your item',
errors: [],
};
if (request.method === 'POST') {
const errors = [];
if (!request.body.name || request.body.name.length > 101) {
errors.push('Please fill out your name');
}
if (errors.length === 0) {
// Add listing to listing SQL table
var listingID;
client.connect();
client.query('INSERT INTO listings (name, email, school, gradyear, phone, object, price, image, firstavail, lastavail) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING id;', [request.body.name, request.body.email, request.body.school, request.body.gradyear, request.body.phone, request.body.object, request.body.price, request.body.image, request.body.firstavail, request.body.lastavail], (err, res) => {
if (err) throw err;
var listingID = res.rows[0].id;
client.end();
console.log('some listing id: ',listingID);
cb(listingID);
// console.log(res.rows);
});
response.redirect(`/listing/${listingID}`);
}
contextData.errors = errors;
} else {
console.log('This is a GET request');
}
return response.render('form', contextData);
}