用mongodb数据库在节点中处理数据

Noob的问题..我怎样才能同步mongoose查询与JSON响应? 下面的代码返回空值,因为查询结束后。 哪一种方法来处理?

router.route('/admin') .get(function (req, res ) { var country = []; var element = []; Country.find({}, function (err, data) { country = data; }); Items.find({}, function (err, data) { element = data; }); res.json({ countries: country, elements: element }); }); 

country.find和Items.find是asynchronous执行的 – 同时运行。 您需要将它们嵌套在callback函数中以遵守asynchronous执行模式 – 这样可以确保它们同步执行。 所以你的代码需要如下所示:

 Country.find({}, function (err, data) { country = data; Items.find({}, function (err, data) { element = data; res.json({ countries: country, elements: element }); }); }); 

一个更先进的,也许更好的方法是使用承诺库 – 这意味着它们仍然是asynchronous执行的,但是只有当所有函数的所有结果都可用时才返回完整的结果 – 这里解释:

执行几个mongoose查询:如何使用promise来代替?