我无法迭代从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中访问返回结果值的方法
由于
答案 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
应返回WriteResult
个WriteResult({ "nRemoved" : 1 })
对象。如果出现错误,则应返回:
WriteResult({
"nRemoved" : 21,
"writeConcernError" : {
"code" : 64,
"errInfo" : {
"wtimeout" : true
},
"errmsg" : "waiting for replication timed out"
}
})