用内部包含的内容查询查询

时间:2016-08-08 04:38:50

标签: node.js express sequelize.js

我有以下型号:

'use strict';

module.exports = function(sequelize, DataTypes) {
    var Collection = sequelize.define("Collection", {
        name: DataTypes.STRING,
        customer: DataTypes.STRING
    }, {
        classMethods: {
            associate: function(models) {
                Collection.hasMany(models.Items);
            }
        }
    });

    return Collection;
};


'use strict';

module.exports = function(sequelize, DataTypes) {
    var Item = sequelize.define("Item", {
        itemId: {
            type: DataTypes.STRING,
            primaryKey: true
        }
    }, {
        classMethods: {
            associate: function(models) {
                Item.belongsToMany(models.Collection);
            }
        }
    });

    return Item;
};

假设我想要获取特定客户的所有馆藏及其物品,其中一个项目包含itemId。 我的查询如下:

models.Collection.findAll({
    where: {
      customer: customerParam
    },
    include: [{
        model: models.Item,
        where: {
          itemId: itemParam
        }
    }]
}).then(function(collections) {
    console.log(collections);
}) 

问题是这个查询过滤了我收集的集合中的项目,现在它们只包含具有相同itemId的项目,而不是包含集合的所有项目。

1 个答案:

答案 0 :(得分:2)

由于查询中的where语句像子查询一样单独执行,因此得到此结果。 因此,如果要生成类似dbms.active_database=/tmp/neo4jbcd的where子句,则应执行以下操作:

WHERE Collection.customer = 'blabla' AND Item.itemId = 1