如何根据关联表中的字段搜索集合?
如果我们使用用户的标准示例和水线文档中的宠物(https://github.com/balderdashy/waterline-docs/blob/master/associations.md),例如,是否可以搜索拥有特定品种宠物的所有用户(请找我所有人)狗主人,例如)?
是否像以下一样简单:
User.find()
.populateAll()
.where({
type: 'dog',
breed: 'scotch collie'
})
.then(function (lassies) {
// ...
});
提前致谢。
答案 0 :(得分:2)
目前无法通过关联进行搜索(从Sails v0.10.x开始)。为了您的目的,最好的解决方案可能是搜索某个品种的所有宠物,填充其所有者,并连接列表。类似的东西:
Pet.find({type: 'dog', breed: 'scotch collie'})
.populate('owners')
.exec(function(err, dogs) {
// Concatenate all the associated owners into one array using reduce,
// then remove duplicates using uniq and the "id" attribute
var owners = _.uniq(_.reduce(dogs, function(memo, dog) {
return memo.concat(dog.owners);
}, []), 'id');
});