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

时间:2015-03-30 08:03:58

标签: node.js sails.js waterline sails-orientdb

我正在使用水线和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'}
    }

};

1 个答案:

答案 0 :(得分:0)

9月,根据您的模型定义,我可以看到您使用的是多对多关联,这些关联尚未得到Waterline的正式支持。这意味着某些功能可能无法完全运行,并且可能会发生某些错误。有关详细信息,请阅读When Many-to-Many Through Associations release? #705

您的查询也不正确:

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 })