如果标准不适用于填充水线



我使用的是水线和水线。我有用户和订单顶点类,并购买了边缘类用户--购买-->订单我正在尝试对填充应用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 })

相关内容

  • 没有找到相关文章

最新更新