Sails.js使用where填充

Sails.js使用where填充,sails.js,waterline,populate,Sails.js,Waterline,Populate,我需要选择带狗的用户(带typeequal'dog'的宠物) 我没有找到任何例子,我试着这样做 User.find().populate('pets', {type: 'dog'}).exec(err, users) ... 还有这个 User.find().where({'pets.type': 'dog'}).populate('pets').exec(err, users) ... 但这是行不通的 如果结果用户数组没有pets记录,那就太好了您要查找的内容尚未在waterline(Sa

我需要选择带狗的用户(带
type
equal'dog'的宠物)

我没有找到任何例子,我试着这样做

User.find().populate('pets', {type: 'dog'}).exec(err, users) ...
还有这个

User.find().where({'pets.type': 'dog'}).populate('pets').exec(err, users) ...
但这是行不通的


如果结果用户数组没有pets记录,那就太好了

您要查找的内容尚未在waterline(Sails ORM)中实现,请查看更多详细信息

User.find().populate('pets',{type:'dog'}).exec(err,users).

这将返回所有用户(
User.find()
),并且只填充dog类型的宠物(
populate('pets',{type:'dog'})
)。所以你的结果中会有没有狗的用户

User.find().where({'pets.type':'dog'}).populate('pets').exec(err,users)

水线不支持点(.)符号。Sails mongo确实有一些支持,因为


最后,如果您正在使用一个SQL适配器,您可以通过使用
.query()
()执行原始SQL查询来解决此问题。

如果您不需要查询用户,只需要查询狗。您也可以轻松地反转查询


Pet.find({type:'dog'}).populate('users').exec(err,petsWithUsers)

你试过这个吗

User.find().populate('pets', {
  where: {
    type: 'dog'
  }
}).exec(err, users)...

您是要过滤用户,还是您唯一的过滤器
pet.type=dog
?任何使用水线(非原始查询)解决此问题的方案都是好的,也只有
pet.type=dog
User.find().populate('pets', {
  where: {
    type: 'dog'
  }
}).exec(err, users)...