如何根据Waterline协会中的字段搜索记录?

时间:2014-09-01 03:51:56

标签: sails.js waterline

如何根据关联表中的字段搜索集合?

如果我们使用用户的标准示例和水线文档中的宠物(https://github.com/balderdashy/waterline-docs/blob/master/associations.md),例如,是否可以搜索拥有特定品种宠物的所有用户(请找我所有人)狗主人,例如)?

是否像以下一样简单:

User.find()
    .populateAll()
    .where({
        type: 'dog',
        breed: 'scotch collie'
    })
    .then(function (lassies) {
        // ...
    });

提前致谢。

1 个答案:

答案 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');

});