我有两个模型用户和聊天,有多对多关联。
user.js的
module.exports = {
attributes: {
name: {
type : 'string'
,required : true
},
email:{
type : 'string'
,email : true
,required: true
,unique : true
},
enpassword : {
type: 'string'
},
online : {
type: 'boolean',
defaultsTo: false
},
socketid: {
type: 'string'
},
chats : {
collection: 'chat',
via: 'users',
dominant: true
}
};
Chat.js
module.exports = {
attributes: {
messages : {
collection: 'message',
via : 'chat',
dominant : true
},
users : {
collection: 'user',
via : 'chats'
},
}
};
当我调用sails blueprint / user / 1 / chats时,我会收到聊天列表,但不会填充每个聊天的用户关联。
如何从Sails查询中实现这一目标?
答案 0 :(得分:2)
好问题。这是一个非常简单的方法。
首先,需要以下模块。
var nestedPop = require('nested-pop');
接下来,运行您的查询。
getPopulatedUsers = function(req, res) {
User.find()
.populate('chats')
.then(function(users) {
return nestedPop(users, {
chats: [
'messages',
'users' // I actually wouldn't recommend populating this since you already have the users
]
}).then(function(users) {
console.log(users);
res.json(users);
});
});
}
有关此问题的更多文档可在以下链接中找到。 https://www.npmjs.com/package/nested-pop