回答

收藏

如何使用Sequelize在联接表上生成查询?

技术问答 技术问答 215 人阅读 | 0 人回复 | 2023-09-12

我们说有两个表,即用户和用户角色。用户和用户角色之间的关系是一对多的。Sequelize模型如下:
1 w2 ^4 {2 h/ k$ lconst user = sequelize.define(  'user{     id: {       type: DataTypes.BIGINT,     allowNull: false,     primaryKey: true,     autoIncrement: true,     field: 'id   userName: {       type: DataTypes.STRING(200)      allowNull: false,     field: 'username   password: {       type: DataTypes.STRING(200)      allowNull: false,     field: 'password      }tableName: 'user` };用户角色续集模型如下-
9 i) C7 E5 e3 q5 n- dconst userRole = sequelize.define(  'userRole{     id: {       type: DataTypes.BIGINT,     allowNull: false,     primaryKey: true,     autoIncrement: true,     field: 'id   userId: {       type: DataTypes.BIGINT,     allowNull: false,     primaryKey: true,     autoIncrement: true,     field: 'user_id   password: {       type: DataTypes.STRING(200)      allowNull: false,     field: 'password      }tableName: 'userRole` };Sequelize关联定义如下:
4 K9 F/ k# {8 }3 T- B% Puser.hasMany(models.userRole,{ foreignKey: 'user_id',as: 'roles' });userRole.belongsTo(models.user,{ foreignKey: 'user_id',as: 'user' });我想使用生成以下查询# D  a9 R5 O, s5 y- Z
Sequelize -SELECT * FROM   USER        INNER JOIN (SELECT user_role.user_id,                          role                    FROM   user_role                           INNER JOIN USER tu                                   ON tu.id = user_role.user_id                    GROUP  BY user_id                    ORDER  BY role) AS roles                ON USER.id = roles.user_id;我在开发一个API,该API前端网格将用于显示用户信息。用户角色表的角色属性具有搜索功能。如果特定用户的任何角色都匹配,我希望获得所有与用户相关的角色的用户记录。
. V5 Z: k0 r3 W" j1 Z- p5 F                                                                : H2 h; O: n+ d  ~; p
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则