jjzjj

javascript - Mongoose findOneAndUpdate 和 upsert 不返回错误,不影响文档

coder 2023-05-04 原文

我有一个非常小的模型:

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

然而errnullnumberAffected 为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/

有关javascript - Mongoose findOneAndUpdate 和 upsert 不返回错误,不影响文档的更多相关文章

随机推荐