所以我想为这5个表创建关系并执行findAll并从每个表中获取一些信息。对不起,丑陋的桌子展示
产品表
setup()
类型表
| Field | Type | Null | Key | Default | Extra |
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| typeId | int(11) unsigned | NO | MUL | NULL | |
| image | varchar(255) | YES | | NULL | |
| desc | text | YES | | NULL | |
| price | float | YES | | NULL | |
| stock | int(11) | YES | | NULL | |
规格表
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
JctProductColors表
| Field | Type | Null | Key | Default | Extra |
| productId | int(11) unsigned | NO | PRI | NULL | |
| name | text | YES | | NULL | |
颜色表
| Field | Type | Null | Key | Default | Extra |
| productId | int(11) unsigned | NO | PRI | NULL | |
| colorId | int(11) unsigned | NO | PRI | NULL | |
这是我现在的关系
| Field | Type | Null | Key | Default | Extra |
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |

我想创建一个findAll来显示这个
Product.belongsTo(Spec, {
"foreignKey": "id",
"through": {
model: "ProductSpec",
unique: false
},
"constraints": false
});
Spec.belongsTo(Product, {
"foreignKey": "productId",
"through": {
model: "ProductSpec",
unique: false
},
"constraints": false
});
Type.belongsToMany(Product, {
"constraints": false,
"foreignKey": "id",
"through": {
model: "ProductType",
unique: false
}
});
Product.belongsTo(Type, {
"constraints": false,
"foreignKey": "typeId",
"through": {
model: jctProductColor,
unique: false
}
});
Product.belongsToMany(Color, {
"constraints": false,
"foreignKey": "productId",
"through": {
model: jctProductColor,
unique: false
}
});
Color.belongsToMany(Product, {
"constraints": false,
"foreignKey": "colorId",
"through": {
model: jctProductColor,
unique: false
}
});

答案 0 :(得分:2)
我知道你在一年前问过这个问题,但我正在寻找同样的事情并找到了你未回答的问题。
你可以这样做:
models.Product.findAll({
attributes: ['image', 'desc', 'price', 'stock'],
include: [{
model: models.Type,
attributes: [['name', 'Type']]
}, {
model: models.Specs,
attributes: [['name', 'Specs']]
}, {
model: models.JctProductColors,
include: [{
model: models.Color,
attributes: [['name', 'Color']]
}]
}
],
where: {
id: id
}
});
有关详细信息,请查看此处:
http://docs.sequelizejs.com/en/latest/docs/querying/