我有一个非常小的模型:
var CompanySchema = new mongoose.Schema({
name: { type: String, required: true, unique: true },
});
var Company = mongoose.model('Company', CompanySchema)
如果单个文档不存在,我正在尝试添加它。目前,我测试时没有文档:
models.Company.findOneAndUpdate({
name: 'companyName'
}, {upsert: true}, function(err, numberAffected, raw){
console.log(err, numberAffected, raw)
})
这是使用 upsert options from the Mongoose docs
然而err 为null,numberAffected 为null。为什么我的文档没有更新?
最佳答案
从 Mongoose 4+ 开始,不要忘记将 new: true 与 upsert 一起设置,否则您将获得旧文档作为返回值,而不是更新后的文档。
这非常棘手,尤其是在请求创建文档时,如果您没有指定 new: true,您会收到一个空文档(没有现有文档),但没有错误。
var myObj = ...;
collection.findOneAndUpdate(
{uniqueAttr: myObj.uniqueAttr},
myObj,
{upsert: true, new: true},
function(...) {...}
关于javascript - Mongoose findOneAndUpdate 和 upsert 不返回错误,不影响文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25116522/