Sam*_*ake 2 javascript node.js underscore.js lodash
var models = require('../models')
, _ = require('underscore')
, Restaurant = models.restaurant
, RestaurantBranch = models.restaurant_branch;
module.exports = {
index: function (req, res) {
var title = 'Restaurants near you';
RestaurantBranch.find({country: 'Ghana', region: 'Greater Accra'}, function (err, branches) {
var results = _.map(branches, function (branch) {
Restaurant.findById(branch._restaurantId, function (err, restaurant) {
return {
'restaurant': restaurant,
'branch': branch
};
});
});
res.send(results);
});
}
};
Run Code Online (Sandbox Code Playgroud)
我在让_.map以我想要的方式工作时遇到了问题.而不是获得带有对象的新数组{restaurant: restaurant, branch: branch}.我得到了[null, null].
我尝试过lodash而不是下划线,我得到了同样的行为.
问题是你的问题Restaurant.findById.该函数似乎是异步的; _.map是同步的.
因此,当您返回数据时,已经很晚了.所做的迭代_.map可能已经完成了.
对于你想要的异步内容,也许你应该考虑使用async(async.map),
使用async的示例:
async.map(branches, function (branch, callback) {
Restaurant.findById(branch._restaurantId, function (err, restaurant) {
callback(null, { restaurant: restaurant, branch: branch });
});
}, function (err, results) {
res.send(results);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |