我需要选择带狗的用户( <div class="row">
<div>
<div class="col-lg-4" ></div>
</div>
<div>
<div class="col-lg-4" ></div>
</div>
<div>
<div class="col-lg-4" ></div>
</div>
</div>
等于'狗'的宠物)
type
我没有找到任何例子,我试过这样的
var User = Waterline.Collection.extend({
identity: 'user',
attributes: {
firstName: 'string',
lastName: 'string',
pets: {
collection: 'pet',
via: 'owner'
}
}
});
var Pet = Waterline.Collection.extend({
identity: 'pet',
attributes: {
type: 'string',
name: 'string',
owner: {
model: 'user'
}
}
});
和这个
User.find().populate('pets', {type: 'dog'}).exec(err, users) ...
但这不起作用
如果结果用户数组没有宠物记录,那么会很重要
答案 0 :(得分:4)
你试过这个吗?
User.find().populate('pets', {
where: {
type: 'dog'
}
}).exec(err, users)...
答案 1 :(得分:1)
您所寻找的内容尚未在水线(Sails ORM)中实施,请查看issue #266了解详情。
User.find()
这将返回所有用户(populate('pets', {type: 'dog'})
)并仅填充dog(.query()
)类型的宠物。因此,您的结果中会有没有狗的用户。
User.find()。where({&#39; pets.type&#39;:&#39; dog&#39;})。populate(&#39; pets&#39;)。exec(错误,用户)......
Waterline不支持点(。)表示法。由于MongoDB support,Sails-mongo确实得到了一些支持。
最后,如果您正在使用其中一个SQL适配器,则可以使用a = 100.0
b = 50.0
c = 200.0
(docs)执行原始SQL查询来解决此问题。
答案 2 :(得分:1)
如果您不需要查询用户,只需要查询狗。您可以轻松地反转查询。
Pet.find({type: 'dog'}).populate('users').exec(err, petsWithUsers)