【发布时间】:2021-02-09 06:17:15
【问题描述】:
如何在 Sequelize 中使用 include 生成以下 sql 语句?
select
*
from
User_Role_Table as user_role
inner join User_Table as u on
u.User_ID = user_role.User_ID
inner join Role_Table as r on
r.User_Role_ID = user_role.User_Role_ID
where
u.User_ID = u_id AND r.Role_Name = 'role_name'
我试过把 where 条件放在 include 里面,但是如果没有找到记录就会报错。
UserRole.findOne({
where: {
userId,
},
include: [
{
model: User,
as: "users",
required: true,
},
{
model: Role,
as: "roles",
require: true,
where: {
roleName,
},
},
],
})
是否可以将包含中的 where 条件放入外部初始 where 块中?我尝试了以下方法,但它返回错误: SequelizeDatabaseError: The multi-part identifier "UserRole.roleName" could not be bound.
UserRole.findOne({
where: {
userId,
"$Role.roleName$": roleName,//roleName condition write here
},
include: [
{
model: User,
as: "users",
required: true,
},
{
model: Role,
as: "roles",
require: true,
},
],
})
【问题讨论】:
标签: node.js express sequelize.js