0

我正在使用 Express.js,我有这个简单的路由器

router.get('/', function(req, res) {
    var userlist;
    req.db.get("usercollection").find({},{})
        .success(function(docs){
            userlist = docs;
        });

    res.render('index', { title: 'Express' , userlist: userlist});
});

但没有任何内容进入用户列表。我知道上面写成

router.get('/', function(req, res) {
    req.db.get("usercollection").find({},{})
        .success(function(docs){
            res.render('index', { title: 'Express' , userlist: docs});
        });
});

会起作用,但我想知道为什么以前的不起作用。另外, db.get(...).find() 返回什么?它在后面的代码中返回与“docs”相同吗?

非常感谢

4

1 回答 1

1

这是因为 req.db.get().find() 是一个异步函数。“res.render”可能在 userlist=docs 分配之前发生。

于 2014-06-21T21:24:48.447 回答