Javascript 虽然返回的承诺看起来正确,但为什么MongoDB没有更新
我正在编写一个程序,将输入列表中的元素保存到MongoDB。调用Javascript 虽然返回的承诺看起来正确,但为什么MongoDB没有更新,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在编写一个程序,将输入列表中的元素保存到MongoDB。调用save()后,我可以得到返回的响应,其中的元素按预期保存。但是,当我执行查询时,结果与保存更新之前相同 Favorites.findOne({user: req.user._id}) .then(doc => { if (!doc) { doc = Favorites({user: req.user._id}) } for (i in req.body) { Dishe
save()
后,我可以得到返回的响应,其中的元素按预期保存。但是,当我执行查询时,结果与保存更新之前相同
Favorites.findOne({user: req.user._id})
.then(doc => {
if (!doc) {
doc = Favorites({user: req.user._id})
}
for (i in req.body) {
Dishes.findById(req.body[i].dishid)
.then(dish => {
if (dish) {
if (doc.dishes.indexOf(dish._id) == -1)
doc.dishes.push(dish._id)
} else {
err = new Error('Cannot find dish ' + req.body[i].dishid)
err.status = 404
next(err)
}
})
.catch(err => next(err))
}
doc.markModified('dishes')
return doc.save()
})
.then(resp => {
return resp.execPopulate('user')
})
.then(resp => {
return resp.execPopulate('dishes')
})
.then(resp => {
res.status(200)
res.setHeader('Content-Type', 'application/json')
res.json(resp)
})
.catch(err => next(err))
我在网上查看过类似的帖子,大多数帖子都建议markModified
。我已经把它写进了我的代码,但没有帮助。我想知道怎样才能正确地保存数据