加入续集

时间:2018-11-13 12:09:45

标签: node.js postgresql sequelize.js

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

一个事件可以被许多用户喜欢,一个用户可以喜欢许多事件。

收藏夹表架构为:

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'});

1 个答案:

答案 0 :(得分:0)

设法提出解决方案:

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'});