![](/img/trans.png)
[英]checked mongoose sava() data Create document if not exists, otherwise, update data
[英]Mongoose : filter then update document if it exists , otherwise create it
在以下方法中,我试图使用我提供的电子邮件地址来搜索文档。 如果文档存在,我想更新_id字段,否则我将创建一个全新的文档。
function (accessToken, refreshToken, profile, done) {
var newUser = new User();
newUser.name = profile.displayName;
newUser.email = profile.emails[0].value.toString();
options = { upsert: true, new: true, setDefaultsOnInsert: true };
update = { '_id': newUser._id };
User.findOneAndUpdate({ 'email': profile.emails[0].value.toString() }, update, options, function (err, user) {
newUser.save(function (err) {
if (err)
throw err;
newUser.token = newUser.generateJwt();
});
});
return done(null, newUser);
}
我在控制台中收到以下错误:
events.js:183 throw er; //未处理的“错误”事件^ BulkWriteError:E11000重复键错误索引:databasename.users。$ id dup键
谢谢您的帮助 !
您可以尝试使用upsert : true
。 如果找不到,这将创建文档
User.findOneAndUpdate(query, update, options, function(error, result) {
if (error) return;
// do something with the document
});
ps。 您不需要做newUser.save(..)
。 如果找不到,那将为您完成。 但是我不知道您为什么要尝试更新id
因为这会导致致命的后果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.