当我填写表单时,接下来我将其作为对象发送给API NodeJS。这是执行功能
.post('/create/card', function (req, res) {
var rb = req.body,
obj = {
query: {
$set: {
['lists.' + rb.cardIndex + '.cards']: rb.cards
},
$push: {
activity: { $each: [rb.activity], $position: 0 }
}
},
idBoard: rb.idBoard
}
Board.updateBoard(obj)
.then((updated) => {
res.send(updated);
})
})
Board.updateBoard(obj)在Board.model中调用它的函数
module.exports.updateBoard = function (obj) {
return new Promise((resolve, reject) => {
Board.findOneAndUpdate({ _id: obj.idBoard }, obj.query, { upsert: true })
.then((updated) => {
resolve(updated);
})
.catch((err) => {
console.log(err);
})
});
};
更新后的这个函数,应该将更新的对象返回给第一个函数,她应该向客户端发送响应,但是在更新的版本对象中是...在更新之前返回对象。有人能告诉我为什么会这样吗?
答案 0 :(得分:2)
findOneAndUpdate如果文档已存在,则始终返回旧文件;如果文档不存在,则返回 null 。
如果您想要返回更新的文档,那么有一个选项可用 returnNewDocument
returnNewDocument :如果为true,则返回更新的文档而不是原始文档。默认值为 false 。
参考:https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/