我是sails.js和MongoDB的新手。感谢您阅读我的问题。
我真的很麻烦。
场合
我有User db,Report db,Post db。
我想获取报告数据并填充父数据报告数据的帖子数据。我还想从发布数据中获取用户数据。
换句话说,我想获得双嵌套数据。
Report |_ post |_user
这是我在ReportController.js中的findReports操作
findReports: function(req, res) {
Report.find().populateAll().sort({createdAt: -1}).exec((er, reports) => {
if (er) return res.negotiate(er)
const rs = reports
console.log('rs : ', rs)
rs.forEach((report) => {
if(report.post) {
User.findOne({id: report.post.user}).exec((er, user) => {
report.post.user = user
console.log("before rs : ", rs)
})
console.log("report.post.user : ", report.post.user)
console.log("after rs : ", rs)
} else {
report.comment.user = User.findOne({id: report.comment.user}).exec((er, user) => {
report.commet.user = user
})
}
})
console.log("final rs : ", rs)
res.view('dashboard/reports/index', { reports: rs })
})
},
当我运行我的代码时,在我的控制台中,结果按照以下顺序打印。
我认为" User.find"方法与整个逻辑无关。
我真的遇到了麻烦。任何建议都会非常有帮助。请给我一些建议。
答案 0 :(得分:0)
水线形式SailsJS不支持deepPopulation。因此,您必须使用另一个,而不是ORM:Offshore
示例:
Report.find().populate("post.user").exec((err, data) => {
// ur code here
})