迭代从nodejs

时间:2015-10-30 07:36:03

标签: node.js mongodb mongodb-query

我无法迭代从mongodb返回的Result

以下是连接到mongodb并获取结果的代码

MongoClient.connect(url, function (err, db) {       

        var collection = db.collection('users');            

            collection.remove({}, { w: 1 }, function (err, result) {
                    console.log(result.ok);
                    res.json    ({ success: true, obj:result.ok});                    
            })
});

结果是

obj: {ok: 1,n: 0}

当我尝试使用 result.n 访问 n 的值时,我得到了不确定。

有没有人让我知道在nodejs中访问返回结果值的方法

由于

2 个答案:

答案 0 :(得分:1)

不,不是。结果:

$(".panel-primary").addClass('changeColorHeading')

res.json({ "success": true, "obj": result })

而不是你声称的那个对象序列化为JSON的方式以及你如何访问它。

但是" true"返回的对象本身就有自己的{ "success": true, "obj": { "ok": 1, "n": 0 } } 密钥,因此如果您想访问result属性甚至是n属性,那么您必须执行此操作:

ok

以下是证明这一点的简单列表:

console.log(result.result.n);

预期结果:

var async = require('async'),
    mongodb = require('mongodb'),
    MongoClient = mongodb.MongoClient;

MongoClient.connect("mongodb://localhost/test",function(err,db) {

  var collection = db.collection('testme');

  async.series(
    [
      function(callback) {
        collection.remove({},callback);
      },
      function(callback) {
        collection.insert(
          [
            { "data": 1 },
            { "data": 2 }
          ],
          callback
        );
      },
      function(callback) {
        collection.remove({},function(err,result) {
          console.log(JSON.stringify(result));
          console.log(JSON.stringify(result.result.n));
          callback(err);
        });
      }
    ],
    function(err) {
      db.close();
    }
  );

});

这是因为"实际上"返回的是来自节点本机驱动程序API的deleteWriteOpResult对象,而不是普通对象。访问器方法就是您所需要的。

API中也认为.remove()方法已弃用,而首选是使用.deleteMany()。它们实际上都做同样的事情,但弃用通知意味着您的代码应该使用该方法以便将来兼容:

{"ok":1,"n":2}
2

答案 1 :(得分:0)

根据mongodb的文档 - db.collection.remove()

.remove应返回WriteResultWriteResult({ "nRemoved" : 1 })对象。如果出现错误,则应返回:

WriteResult({
   "nRemoved" : 21,
   "writeConcernError" : {
      "code" : 64,
      "errInfo" : {
         "wtimeout" : true
      },
      "errmsg" : "waiting for replication timed out"
   }
})