【发布时间】:2013-03-31 12:38:14
【问题描述】:
我有 node.js 和 express3。
对于 mongodb 的使用,我需要 mongo-lazy 包。
所以,我有一个简单的 GET 路由器:
var db = require('mongo-lazy').open({
db: 'somedb',
host: '127.0.0.1',
port: 27017,
user: 'someuser',
password: 'somepassword'
});
var result={};
db.person.findAll({}, function (err, persons) {
result.err=err;
result.persons=persons;
console.log("__0: " + typeof persons);
console.log("__1: " + typeof result.persons);
});
console.log("__2: " + typeof result.persons);
if (!result.err) res.send("test");
控制台是:
Express server listening on port 3000
__2: undefined
GET /mongo 200 1508ms - 5
__0: object
__1: object
所以,问题是:
- 为什么node先调用__2,再调用__0、__1在__2之后,而行序却是其他的?
- 如何将
err、persons放入result?
【问题讨论】:
-
因为
db.person.findAll是异步。看看first part of my answer here。任何必须处理结果的东西都必须在回调内部。 -
@FelixKling 非常感谢。
标签: javascript node.js mongodb express