我正在使用水线和waterlinhe-orientdb。 我有用户和订单顶点类并购买边缘类 用户---买了 - >订单 我想在populate上应用Where标准。 但是不是在填充。 这是我的代码
var CREDIT_CARD = 1;
User.find({id:userid}).populate('boughts',{where:{payment_method:CREDIT_CARD}})
模式
USER = {
identity: 'user',
connection: 'myLocalOrient',
attributes:{
status: { type:"integer", columnName:"status"},
fname: { type:'string'},
lname: { type:'string'},
boughts: {collection: 'orders',through: 'boughts',via: 'user',dominant: true}
};
Bought = {
identity:'boughts',
connection: 'myLocalOrient',
attributes:{
status:{type:'integer', columnName:'status'},
buyers:{
columnName: 'out',
type: 'string',
foreignKey: true,
references: 'users',
on: 'id',
onKey: 'id',
via: 'orders'
},
orders:{
columnName: 'in',
type: 'string',
foreignKey: true,
references: 'orders',
on: 'id',
onKey: 'id',
via: 'buyer'
}
}
};
Order = {
identity:'orders',
connection: 'myLocalOrient',
attributes:{
status:{type:'integer',columnName:'status'},
payment_method:{type:'integer', columnName:'payment_method'},
boughts:{collection:'users', through:'boughts',via:'orders'}
}
};
答案 0 :(得分:0)
您的查询也不正确:
var CREDIT_CARD = 1;
User.find({id:userid}).populate('boughts',{where:{payment_method:CREDIT_CARD}})
.populate()
中的条件未使用密钥where
。
以下是documentation:
的示例// Collection Filtering
User.find()
.populate('foo', { type: 'bar', limit: 20 })
.exec(function(err, users) {});
因此,在您的情况下,您应该使用:
var CREDIT_CARD = 1;
User.find({ id: userid }).populate('boughts', { payment_method: CREDIT_CARD })