Javascript 对复杂联接查询进行续集以使用findAll
因此,我想建立这5个表的关系,并进行findAll,从每个表中获取一些信息。对不起,这张桌子太难看了 产品表Javascript 对复杂联接查询进行续集以使用findAll,javascript,mysql,sequelize.js,Javascript,Mysql,Sequelize.js,因此,我想建立这5个表的关系,并进行findAll,从每个表中获取一些信息。对不起,这张桌子太难看了 产品表 | Field | Type | Null | Key | Default | Extra | | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | typeId | int(11) unsigned | NO | MUL | NULL
| 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 | |
| Field | Type | Null | Key | Default | Extra |
| productId | int(11) unsigned | NO | PRI | NULL | |
| name | text | YES | | NULL | |
| Field | Type | Null | Key | Default | Extra |
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
规格表
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| Field | Type | Null | Key | Default | Extra |
| productId | int(11) unsigned | NO | PRI | NULL | |
| name | text | YES | | NULL | |
| Field | Type | Null | Key | Default | Extra |
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
JCTProductColor表
| 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) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| Field | Type | Null | Key | Default | Extra |
| productId | int(11) unsigned | NO | PRI | NULL | |
| name | text | YES | | NULL | |
| Field | Type | Null | Key | Default | Extra |
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
这就是我现在的关系
Product.belongsTo(规格、{
“外键”:“id”,
“通过”:{
型号:“产品规格”,
唯一:错误
},
“约束”:false
});
规格belongsTo(产品、{
“foreignKey”:“productId”,
“通过”:{
型号:“产品规格”,
唯一:错误
},
“约束”:false
});
类型。属于气孔(产品、{
“约束”:假,
“外键”:“id”,
“通过”:{
型号:“ProductType”,
唯一:错误
}
});
产品名称:belongsTo(类型:{
“约束”:假,
“外键”:“类型ID”,
“通过”:{
型号:jctProductColor,
唯一:错误
}
});
产品名称(颜色、{
“约束”:假,
“foreignKey”:“productId”,
“通过”:{
型号:jctProductColor,
唯一:错误
}
});
颜色。属于气孔(产品、{
“约束”:假,
“foreignKey”:“colorId”,
“通过”:{
型号:jctProductColor,
唯一:错误
}
});代码>我知道你一年前问过这个问题,但我在搜索同样的问题,发现了你没有回答的问题
你可以这样做:
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
}
});
有关更多信息,请查看此处:
我不知道这是什么意思,但这个词是+1sequelize@Frisbeesequelize是一个nodejs ORM库