无法从回调中的remove()访问writeresult

时间:2015-10-18 19:37:31

标签: javascript node.js mongodb

我对Mongodb很新,到目前为止已成功使用Find, Insert, Update方法。但是,使用Delete功能,我无法访问 WriteResult

插入 Works

productCollection.insert(newProduct, function (err, result) {
        callBack(err, { message: result["insertedCount"] + ' product created successfully.' });
    });

查找作品

productCollection.find({}).toArray(function (err, docs) {
        callBack(err, { product: docs });
    });

删除(有问题)

productCollection.remove({ id: pId }, { justOne: 1 }, function (err, result) {
      callBack(err, { message: result});
});

当我返回 {message:result} 时,我得到了

{
    "message": {
        "ok": 1,
        "n": 0
    }
}

但我想真正阅读" n"从结果显示没有删除文件

尝试以下

  1. {message:result [" n"]}
  2. {message:result [" nRemoved"]}
  3. 但在这两种情况下都会返回空对象{}。

2 个答案:

答案 0 :(得分:2)

根据Node.js MongoDB驱动程序API的2.0版本,不推荐使用remove()方法,可以使用removeOne()方法代替:

http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#remove

要接收已删除的文档数,您需要使用安全模式以确保删除文档。要执行此操作,请通过将{w:1}传递给removeOne()函数来指定写入问题:

productCollection.removeOne({ _id: pId }, { w:1 }, function(err, r) {
  // number of records removed: r.result.n
  callBack(err, { message: r });
});

希望这有帮助。

答案 1 :(得分:1)

感谢Yelizaveta指出了弃用的方法。但在我的情况下,继续工作

productCollection.removeOne({ id: pId }, { w: 1 }, function (err, r) {
    callBack(err, { message: r.result["n"]});
});

我无法 r.result.n r.result [“n”] 工作,我不明白。