我正在尝试使用Node-mongodb-native从我的mongolab数据库中检索数据
var findAll = function () {
var ddocs;
collection.find({}).each(function (arr, docs) {
ddocs = docs;
});
console.log(ddocs);
};
但似乎当我记录ddocs时,它会给我未定义,但如果我记录文档,它会显示数据。
请帮忙 我该如何使用这个功能?
由于 Tzelon Machluf
答案 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约定是嵌套回调,以便一切都以正确的顺序发生,并在它准备就绪时发生。