【问题标题】:Mongodb findandmodify() Cannot read property 'result' of undefinedMongodb findandmodify()无法读取未定义的属性“结果”
【发布时间】:2017-03-09 12:40:58
【问题描述】:

我对nodejs + mongodb findandmodify() 函数有问题,上周下面的代码运行正常,但现在突然抛出错误:

db.collection(collectionName).findAndModify(query || {}, [], {$set: object},
     {upset: true}, callback || function () {
});

如果查询未定义,则代码运行正常,但查询参数 ex: "_id": "idofcollection" 或 "template": "templatename" 会引发异常:

E:\Working\Projects\iERP\trunk\client\source\node_modules\mongodb\lib\db.js:309
handleCallback(callback, null, result.result);
                                     ^TypeError: Cannot read property 'result' of undefined
at E:\Working\Projects\iERP\trunk\client\source\node_modules\mongodb\lib\db.js:309:42
at E:\Working\Projects\iERP\trunk\client\source\node_modules\mongodb-core\lib\connection\pool.js:436:18
at doNTCallback0 (node.js:419:9)
at process._tickCallback (node.js:348:13)

请解释一下解决这个问题的方法?

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    我会改用$or

        db.collection(collectionName).findAndModify({ $or: [ query,  { example: 10 } ] },  {$set: object}, function (){
        });
    

    两件事:

    1. 我不确定您的代码中的 callback 是什么。通常回调是​​an anonymous function
    2. query 应该看起来像这样 { price: 5 }

    这是$or的一些文档:https://docs.mongodb.com/manual/reference/operator/query/or/

    希望这会有所帮助!

    【讨论】:

    • 谢谢,但回调是抽象函数,像你写的那样查询,我已经为你的建议更改了代码,但不行。补充资料:其他集合调用函数findandmodify都可以,只是这个集合抛出错误:(
    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多