Node.js 在nodejs中迭代从mongodb返回的结果
我无法遍历从mongodb返回的结果 下面是连接到mongodb并获得结果的代码Node.js 在nodejs中迭代从mongodb返回的结果,node.js,mongodb,mongodb-query,Node.js,Mongodb,Mongodb Query,我无法遍历从mongodb返回的结果 下面是连接到mongodb并获得结果的代码 MongoClient.connect(url, function (err, db) { var collection = db.collection('users'); collection.remove({}, { w: 1 }, function (err, result) { cons
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中返回结果的值吗
谢谢根据mongodb的文档-
.remove
应该返回一个WriteResult
对象,该对象看起来像WriteResult({“nRemoved”:1})
。如果出现错误,则应返回:
WriteResult({
"nRemoved" : 21,
"writeConcernError" : {
"code" : 64,
"errInfo" : {
"wtimeout" : true
},
"errmsg" : "waiting for replication timed out"
}
})
不,不是。结果:
res.json({ "success": true, "obj": result })
是
而不是你所说的对象是如何序列化为JSON的,以及你是如何访问它的
但是,返回的“true”对象本身有它自己的结果
键,因此如果要访问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();
}
);
});
预期结果如下:
{"ok":1,"n":2}
2
这是因为“实际”返回的是来自节点本机驱动程序API的对象,而不是普通对象。访问器方法是您真正需要的
该方法在API中也被认为是不推荐使用的,首选使用它。事实上,它们都做相同的事情,但弃用通知意味着您的代码应该使用该方法以实现将来的兼容性:
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.deleteMany({},callback);
},
function(callback) {
collection.insert(
[
{ "data": 1 },
{ "data": 2 }
],
callback
);
},
function(callback) {
collection.deleteMany({},function(err,result) {
console.log(JSON.stringify(result));
console.log(JSON.stringify(result.result.n));
callback(err);
});
}
],
function(err) {
db.close();
}
);
});
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.deleteMany({},callback);
},
function(callback) {
collection.insert(
[
{ "data": 1 },
{ "data": 2 }
],
callback
);
},
function(callback) {
collection.deleteMany({},function(err,result) {
console.log(JSON.stringify(result));
console.log(JSON.stringify(result.result.n));
callback(err);
});
}
],
function(err) {
db.close();
}
);
});