私は単純なノードベースのAPIを使用しています。これはJSONを解析し、データをPostgresに保存し、適切なレスポンスコード(http 201など) 。 私のコードは次のようになります。Node.js APIからレスポンスコードを正しく送信する方法
router.route('/customer')
.post(function(req, res) {
Customers = req.body;
var numberOfCustomers = Customers.length;
for(var i = 0; i < Customers.length; i++){
Customer = Customers[i];
console.log(Customer.Name + " " + Customer.Address);
var date = moment(new Date()).unix();
client.query(
'INSERT into customer (name, address, date_modified) VALUES($1, $2, $3) RETURNING id',
[Customer.Name, Customer.Address, date],
function(err, result) {
if (err) {
console.log(err);
status = 1;
} else {
console.log('row inserted with id: ' + result.rows[0].id);
if(numberOfCustomers === i) {
res.status(201).send({ message: "created" });
}
}
});
}
})
私はこのエラーを取得しています:
_
http_outgoing.js:344
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
私は私が私のPostgresは、複数の挿入を行うんだという、事実を考慮する必要があります最初の挿入が完了した後で私の応答ヘッダーを送信することはできません。
私の 'POST'ハンドラ内で最も適切な場所は、res.status(201).send({ message: "created" });
です。
最も適切な場所は、リクエストに*単一の返信*を送信する場所です。それはあなたの要求に完全に従っています。 – Amit