После отправки запроса вылетает ошибка
Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту в ServerResponse.setHeader.
Найдите код ниже:
router.post('/share', (req, res) => {
const {userArray} = req.body
userArray.map(userArray =>
Share.findOne({ username: userArray.username }, (err, user) => {
if (err) {
console.log('share in router user.js post error: ', err)
}
else if (user) {
Share.update({ username: userArray.username}, {$push: { sharedPapers: userArray.sharedPaper }, status: 1,name:userArray.name},
function (error, success) {
if (error) {
res.json(error)
// console.log(error);
} else {
// res.json(user)
res.json(user)
// console.log("success");
}
});
}
else {
console.log(userArray.username,userArray.sharedPaper)
const newShare = new Share({
username: userArray.username,
sharedPapers: userArray.sharedPaper,
status:1
})
newShare.save((err, shareHistory) => {
if (err) {return res.json(err)}
else{res.json(shareHistory)}
})
}
})
)
})
.map()
, которые фактически завершаются после/во время вашего последнего вызова.save()
, где вы также используете ответres.json()
. Кроме того, вы в принципе не можете включатьres.json()
в цикл. Вы можете позвонить только один раз. См. такжеbulkWrite()
примеров в обновлении поля MongoDB с использованием значения другого поля о том, как вы на самом деле должны выпускать обновления в цикле. И использованиеfindOne()
перед каждой операцией в основном избыточно. - person Neil Lunn   schedule 22.03.2019