【发布时间】:2017-04-13 14:49:00
【问题描述】:
我有这些模型:
module.exports = function(sequelize, DataTypes) {
const Tool = sequelize.define('Tool', {
Price: {type: DataTypes.STRING(255)},
PurchaseDate: DataTypes.DATE,
});
return Tool;
};
module.exports = function(sequelize, DataTypes) {
const RepairOrder = sequelize.define('RepairOrder', {
OrderNumber: {type: DataTypes.STRING(255)}
}, {
classMethods: {
associate(models) {
RepairOrder.belongsTo(models.Tool, {as: 'Tool'});
}
}
});
return RepairOrder;
};
module.exports = function(sequelize, DataTypes) {
const Hammer = sequelize.define('Hammer', {
Color: {type: DataTypes.STRING(255)}
},
{
classMethods: {
associate(models) {
Hammer.belongsTo(models.Tool, {as: 'Tool'});
}
}
});
return Hammer;
};
module.exports = function(sequelize, DataTypes) {
const Spanner = sequelize.define('Spanner', {
Size: {type: DataTypes.STRING(255)}
},
{
classMethods: {
associate(models) {
Hammer.belongsTo(models.Tool, {as: 'Tool'});
}
}
});
return Spanner;
};
因为BelongsTo 方法Hammer 和Spanner 有一个ToolID 列。 现在我想接收所有带有工具信息的维修订单,所以我将这些工具加入到维修订单中。
RepairOrder.findAll({
attributes: ['ID', 'OrderNumber'],
include: [{
model: Tool, as: 'Tool'
}]
});
但我也想知道在选择维修订单时是哪种类型的工具(锤子或扳手),那么如何将两者都加入到工具中? 像
RepairOrder.findAll({
attributes: ['ID', 'OrderNumber'],
include: [{
model: Tool, as: 'Tool',
include: [{'JOIN ON "Hammer"."ToolID" = "Tool"."ID"'},
{'JOIN ON "Spanner"."ToolID" = "Tool"."ID"'}]
}]
});
【问题讨论】:
标签: node.js associations sequelize.js