【发布时间】:2018-07-22 14:17:39
【问题描述】:
基本上,我是在mongodb中使用loopback,想要推送数据,设置数据和递增数据一起得到最终结果。
为此我尝试了这个。
db.invoice.findOneAndUpdate({ _id: ObjectId(req.params.id) },
{
$push: { payment: paymentData }
, $set: { payment_status: true, updated_at: new Date() }
, $inc: { total_amount_paid: paidAmt }
}
,
function (err, doc) {
if (err) { return new Error(err); }
else {
if (doc.result.n>0) {
setTimeout(function () { }, 200);
console.log(" Invoice updated with Payment info.");
nextCall(null, { code: 200, data: doc.result });
} else {
console.log("Something went wrong while payment info updation.")
nextCall(null, { code: 400, status: 'Something went wrong while payment info updation.' })
}
}
});
});
案例 1:
文档正在更新,但未推送支付数组。
案例 2:
如果我删除回调函数 它正在推动、设置价值并增加支付的总金额。$inc
如果想实现case2,有人能告诉我哪里做错了吗?
谢谢
【问题讨论】:
-
在更新对象和回调之间添加选项对象。选项应该有
new: true,这将从数据库中返回更新的文档。默认情况下(来自v4.0)new是false,因此您在callback中的doc尚未更新文档。
标签: javascript node.js mongodb mongoose mongodb-query