我正在尝试使用 async.each 来确保在返回响应之前我的深度填充已完成。我遇到的问题是站点内的位置永远不存在。我返回的只是第一次查询的网站。不过,位置查询的结果输出到控制台就很好了。
总而言之,给出了用户的 ID。然后,我返回与该用户关联的网站,然后填充该网站的位置。
getSitesForUser: function (req, res) {
var _id = req.param('id');
User.findOne({ id: _id })
.populate('sites')
.then(function afterFind(results) {
if (!results) {
return res.json({ status: 'failure', message: 'User not found' });
}
var sites = results.sites;
async.each(sites, function (site, cb) {
var locations = {};
Locations.find({ id: site.id })
.then(function afterFind(locResults) {
//locResults outputs correctly
sails.log.debug(locResults);
site.locations = locResults;
cb();
})
.fail(function (err) {
sails.log.debug(err);
cb(err);
})
}, function (err) {
if (err) {
sails.log.debug(err);
return res.json({ status: 'failure', message: 'Server error' });
} else {
return res.json({ status: 'success', message: 'Sites for found user', sites: sites });
}
});
})
.fail(function (err) {
sails.log.debug(err);
return res.json({ status: 'failure', message: 'Server error' });
});
}
提前致谢。
最佳答案
根据 Sangharsh 的建议,toJSON() 解决了这个问题。
var resultsJSON = results.toJSON();
var sites = resultsJSON.sites;
关于javascript - Sails Js 异步和深度填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44883584/