【发布时间】:2013-09-27 20:40:26
【问题描述】:
我正在使用 nodejs 通过 Mongoose 从 Mongodb 查询数据。 获取数据后,我想在响应客户端之前对该数据做一些事情。但我无法获得返回值。在 Google 上查看后,我了解到 Node.js 函数是异步 javascript 函数(非 I/O 阻塞)。我试试这个 tut (http://www.youtube.com/watch?v=xDW9bK-9pNY) 但它不起作用。下面是我的代码。 myObject 在“find()”函数内部被赋值,在“find()”函数外部未定义。那么我应该怎么做才能获取数据呢?谢谢!
var Person = mongoose.model('Person', PersonSchema);
var Product = mongoose.model('Product', ProductSchema);
var myObject = new Object();
Person.find().exec(function (err, docs) {
for (var i=0;i<docs.length;i++)
{
Product.find({ user: docs[i]._id},function (err, pers) {
myObject[i] = pers;
console.log(myObject[i]); //return the value is ok
});
console.log(myObject[i]); //return undefined value
}
console.log(myObject); //return undefined value
});
console.log(myObject); //return undefined value
app.listen(3000);
console.log('Listening on port 3000');
【问题讨论】:
-
这是我来自 github 的帖子:github.com/LearnBoost/mongoose/issues/…
标签: javascript node.js asynchronous mongoose return-value