node.js - 在 sequelize 中左连接同一张表

标签 node.js sequelize.js

我想在 sequelize 中编写以下查询,但无法理解该怎么做。
SELECT * FROM RegisterUser AS RegisterUser LEFT OUTER JOIN Notification as Noti ON PM_UserID = Noti.ReceiveID LEFT OUTER JOIN RegisterUser AS RegisterUser1 ON Noti.SenderId = RegisterUser1.PM_UserID WHERE RegisterUser.PM_UserID = ReceiveID
我在下面的查询中写了一个左连接,它工作正常。

  RegisterUser.findAll({
include: [
  {
    model: Notification,
    as: 'NotificationrecipientId',
    required: false,
  },
],
raw: true });

我的关联如下:
db.RegisterUser.hasMany(db.Notifications, { as: 'NotificationrecipientId', foreignKey: 'ReceiveID' });

发件人 ID 以及注册用户表中。

最佳答案

为此,您又定义了一个关联:

db.Notification.belongsTo(db.RegisterUser, { as: 'Sender', foreignKey: 'SenderId' });

然后像这样使用它:
RegisterUser.findAll({
    include: [{
        model: Notification,
        as: 'NotificationrecipientId',
        required: false,
        include: [{
            model: RegisterUser,
            as: 'Sender', // <---- HERE
            required: false,
        }, ]
    }, ],
    raw: true
});

关于node.js - 在 sequelize 中左连接同一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53591669/

相关文章:

sequelize.js - 在 Sequelize 中使用 findByPk 和 WHERE 条件

sequelize.js - Sequelize : multiple entities in the same table breaks test

mysql - 选择所有日期时间的数据

node.js - Node Js/Typescript - AMQP 消费者

javascript - 检查字符串是否属于对象中键的数组类型值

javascript - 没有客户端 url 处理的动态网站

javascript - 使用类扩展而不是 util.inherits

node.js - Sequelize.js 查询连接两个表,并在连接表上使用 where 子句

mysql - Sequelize cli 创建属于用户或员工的关联

node.js - AWS Lambda : Sequelize acess denied error after accessing successfully the first time