创建记录后,我试图使用$ push发送刚刚创建到其他模型中的记录的ID。
likeRoutes.route('/add').post(function(req, res){
let like = new Like({
value: req.body.value,
_report: req.body._report
})
like.save((err, doc) => {
if (err)
res.send(err)
console.log('in router - card id', req.body._report)
console.log('doc id', doc)
Report.findOneAndUpdate({ _id: req.body._report },
{ $push: { like: doc._id } },
{ new: true , useFindAndModify: false },
(err, post) => {
if (err)
res.send(err)
res.json({doc})
}
)
})
})
运行此命令时,我不断收到Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
的错误
我以前曾这样配置它:
Report.findOneAndUpdate({ _id: req.body._report },
它每次都在相同的报告中添加喜欢的记录,而没有按ID查找。
答案 0 :(得分:0)
您不能一个接一个地打电话给res.send
和res.json
。
尝试一下:
likeRoutes.route('/add').post(function(req, res){
let like = new Like({
value: req.body.value,
_report: req.body._report
})
like.save((err, doc) => {
if (err) return res.send(err)
console.log('in router - card id', req.body._report);
console.log('doc id', doc);
Report.findOneAndUpdate({ _id: req.body._report },
{ $push: { like: doc._id } },
{ new: true , useFindAndModify: false },
(err, post) => {
if (err) return res.send(err);
res.json({doc})
}
)
})
})
现在,如果发生错误,您将停止执行并返回错误。如果没有错误-您正在发送结果。