在水线的docs中,声明这是在模型上执行IN查询的方法:
Serial.println("In Monitor")
这是在模型上执行OR查询的方法:
Model.find({
name : ['Walter', 'Skyler']
});
我现在的问题是我需要这两者的组合,并且为了使它更复杂,我必须使用的一个属性是集合。
所以我尝试的是这个,但它似乎不起作用:
Model.find({
or : [
{ name: 'walter' },
{ occupation: 'teacher' }
]
})
注意:userIds是来自用户模型的id的数组。
(简化)产品模型看起来像这样:
Product.find({
or : [
{ createdBy: userIds },
{ likes: userIds }
]
})
当我只包含createdBy时查询有效,所以它似乎是collection属性的问题。 这有点可能吗? 感谢您的投入。
更新
我认为这只适用于native()查询。 我理解它的方式应该有效。
module.exports = {
attributes: {
name: 'string',
description: 'string',
createdBy: {
model: 'User'
},
brand: {
model: 'Brand',
},
likes: {
collection: 'User',
}
}
}
不幸的是,事实并非如此。返回的Product.native(function(err, products){
if(err) return res.serverError(err);
products.find({"likes": { $elemMatch: { _id: { $in: userIds}}}}).toArray(function(err, results){
if (err){
console.log('ERROR', err);
}
else {
console.log("found products: " + results.length);
console.log(results);
return res.ok(results);
}
});
});
始终是一个空数组。