我使用的是水线和水线。我有用户和订单顶点类,并购买了边缘类用户--购买-->订单我正在尝试对填充应用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'}
}
};
9me,从您的模型定义中,我可以看到您正在通过使用多对多关联,而Waterline尚未正式支持这些关联。这意味着某些功能可能无法完全运行,并且可能会出现一些错误。有关更多详细信息,请阅读"当多对多通过关联发布?"#705.
您的查询也不正确:
var CREDIT_CARD = 1;
User.find({id:userid}).populate('boughts',{where:{payment_method:CREDIT_CARD}})
.populate()
中的条件不采用关键字where
。
以下是文档中的一个示例:
// 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 })