我有以下型号:
'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的项目,而不是包含集合的所有项目。
答案 0 :(得分:2)
由于查询中的where语句像子查询一样单独执行,因此得到此结果。
因此,如果要生成类似dbms.active_database=/tmp/neo4jbcd
的where子句,则应执行以下操作:
WHERE Collection.customer = 'blabla' AND Item.itemId = 1