我正在尝试使用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' });
});
}
提前致谢。
答案 0 :(得分:0)
根据Sangharsh的建议,toJSON()解决了这个问题。
var resultsJSON = results.toJSON();
var sites = resultsJSON.sites;