Javascript 虽然返回的承诺看起来正确,但为什么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

我正在编写一个程序,将输入列表中的元素保存到MongoDB。调用
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
。我已经把它写进了我的代码,但没有帮助。我想知道怎样才能正确地保存数据