【发布时间】:2017-02-26 20:59:25
【问题描述】:
背景:Market 集合有一个url 属性,该属性存储来自Site 集合中选定sites 的一组url。我创建了一个助手(下面的代码),我可以从 /routes/markets.js 调用它,它基本上基于 req.params.url 选择 Market,然后遍历 market.sites 数组并找到相应的 Site,将它们存储到一个数组中我可以在渲染视图时使用。
问题:在数组上调用push 函数实际上不会推送任何内容,在最后一个console.log 语句中我只是记录了[]
问题:我怎样才能推入这个数组?这是for of 循环和then Promise 调用的问题吗?
market-helpers.js
exports.listSites = (req, res, errorRender, successRender) => {
let sites = [];
Market.find({url: req.params.url})
.then((market) => {
for (url of market[0].sites)
Site.find({url}).then((site) => {
sites.push(site[0]);
}).catch((err) => console.log(err));
console.log(sites);
res.render(successRender, {sites});
})
.catch((errors) => {
res.render(errorRender, {errors});
});
};
routes/markets.js
router.get('/:url', (req, res) => {
Markets.listSites(req, res, 'login-markets', 'markets/index');
});
【问题讨论】:
标签: javascript node.js mongodb mongoose mongodb-query