mongodb native如何使用查询

时间:2013-12-21 21:07:04

标签: node.js mongodb node-mongodb-native

我正在尝试使用Node-mongodb-native从我的mongolab数据库中检索数据

var findAll = function () {
   var ddocs;   
   collection.find({}).each(function (arr, docs) {
    ddocs = docs;
   });
   console.log(ddocs);
};

但似乎当我记录ddocs时,它会给我未定义,但如果我记录文档,它会显示数据。

请帮忙 我该如何使用这个功能?

由于 Tzelon Machluf

1 个答案:

答案 0 :(得分:0)

您基本上是在尝试创建一个能够返回集合中所有文档的函数吗?如果是这样,以下应该可行。但是,我同意@hgoebl并且您应该了解节点,因为这不可能是完成您要做的事情的最佳方式。

var ddocs;

var findAll = collection.find().toArray( function(err, docs) {
    if(err)
        throw err;
    console.log('Collection returned');
    return ddocs = docs;
});

setTimeout( function(err) {
    if(err) throw err;
    console.log(ddocs);
    db.close();
}, 1000);

特别需要注意的一点是:collection.find是异步的,因此您的代码中的问题(为什么它ddocs未定义)是您在ddocs之前{ {1}}曾经完成;因此,它已初始化,但未分配任何值。 Node约定是嵌套回调,以便一切都以正确的顺序发生,并在它准备就绪时发生。