Node.js 猫鼬:上传后获取文档id
有没有办法在插入后获取记录id 我看过这篇文章(),但它只面向插入,而不是更新 另外,使用MongoDB,您可以使用getlasterror()获取_id,但Mongoose不提供对它的访问() 谢谢在选项对象中使用Mongoose的方法Node.js 猫鼬:上传后获取文档id,node.js,mongoose,Node.js,Mongoose,有没有办法在插入后获取记录id 我看过这篇文章(),但它只面向插入,而不是更新 另外,使用MongoDB,您可以使用getlasterror()获取_id,但Mongoose不提供对它的访问() 谢谢在选项对象中使用Mongoose的方法 var query = { name: 'borne' }, data = { name: 'jason borne' }, options = { upsert: true }; Model.findOneAndUpdate(query, d
var query = { name: 'borne' },
data = { name: 'jason borne' },
options = { upsert: true };
Model.findOneAndUpdate(query, data, options, function (err, object) {
/* use object._id */
});
承诺的另一种可能性:
Model.findOneAndUpdate(query, data, options, function (err, object) {
})).then((result) => {
/* return result.upserted[0]._id */
})
…其中,结果
如下所示:
{ n: 1,
nModified: 0,
upserted: [ { index: 0, _id: /* some id */ } ],
ok: 1 }
如果您希望返回更新后的文档,并且在该文档不存在且已升级的情况下,返回新文档。下面是您需要设置的选项 将new:true设置为选项:
options={upsert:true,new:true}代码>
来源:根据Jamiel的评论,我添加了他的评论作为答案,因为在upsert创建的文档不存在的情况下,我很难找到该id(我正在尝试创建自己的扩展方法)。请注意,如果您希望返回更新的文档,如果它不存在并且在新文档中被追加,那么您需要将new:true添加到options:options={upsert:true,new:true};