【问题标题】:Join in sequelize加入续集
【发布时间】:2018-11-14 03:49:48
【问题描述】:

我有以下数据库表:事件、用户和收藏夹。

一个事件可以被很多用户收藏,一个用户可以收藏很多事件。

最喜欢的表架构是:

CREATE TABLE favorites
(
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    event_id INTEGER REFERENCES events(id) ON DELETE CASCADE,

    PRIMARY KEY (user_id, event_id)
);

我需要的是一个查询,它返回所有事件和关于每个事件是否被用户收藏的信息(最好是布尔值)(它的 ID 可用,你可以称之为 user_id)。

到目前为止我已经尝试过:

Event.findAll({
    include: { 
        model: sequelize.models.favorites,
        required: false,
        where: {
            user_id: user_id
        }
    }
});

在事件模型中我有关联

models.events.belongsToMany(models.users, { through: 'favorites'});

在用户模型中我有关联

models.users.belongsToMany(models.events, { through: 'favorites'});

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    设法提出解决方案:

    Event.findAll({
        include: { 
            model: sequelize.models.users,
            as: 'favorite',
            where: {
                id: user_id
            },
            required: false
        }
    });
    

    具有以下关联:

    models.users.belongsToMany(models.events, { through: 'favorites', as: 'favorite'});
    
    models.events.belongsToMany(models.users, { through: 'favorites', as: 'favorite'});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-24
      • 2017-04-14
      • 2018-12-12
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      相关资源
      最近更新 更多