Node.js nodej在mongodb中获得查找结果

Node.js nodej在mongodb中获得查找结果,node.js,mongodb,Node.js,Mongodb,我正在尝试获取查询结果,但我在所有变量中都得到了相同的信息:db、collection和res: var mongodb = require("mongodb"); var mongoserver = new mongodb.Server("localhost", 27017); var instance = new mongodb.Db("test", mongoserver); instance.open(function(err, db) { console.log('db:');

我正在尝试获取查询结果,但我在所有变量中都得到了相同的信息:db、collection和res:

var mongodb = require("mongodb");
var mongoserver = new mongodb.Server("localhost", 27017);
var instance = new mongodb.Db("test", mongoserver);

instance.open(function(err, db)
{
  console.log('db:');
  console.log(db);
  db.collection('kurtsoa', function(err, collection)
  {
    console.log('collection:');
    console.log(collection);
    collection.find({}, function(err, res)
    {
      console.log('res:');
      console.log(res);
    });
  });
});
如何获得“查找”的结果?

您可以使用:

 collection.find().toArray(function(err, docs){
                console.log(docs);
    )};
将返回一个对象供您使用。如果您感兴趣的只是获取阵列中的所有结果,那么您可以执行以下操作:

collection.find().toArray(function(err, docs) {
    console.log(docs);
});
但您也可以迭代光标:

collection.find().each(function(err, doc) {
    //called once for each doc returned
});

这也是一个更好的答案和解释;一旦“doc”完成对所有项目的迭代,“doc”将被设置为null。在第一个代码片段中,为什么
console.log(typeof(docs))
返回
object
toArray()
建议它应该返回一个数组……因此第一个代码段中的
docs.each()
不起作用,但是
console.log(docs.length)
确实返回文档数。另外,我注意到在第二个代码片段中,
console.log(doc)
在迭代所有文档后将返回null。为什么会这样?要回答第一个问题,
typeof([])===“object”
。其次,答案是“这就是Cusor在这个API中的工作方式”。