node.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'});
解决方案
设法想出了一个解决方案:
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'});
推荐阅读
- typescript - 在一个屏幕上使用 React Native、Graphql 和 Formik 的 Typescript
- visual-studio - MSBuild 的版本历史是什么?
- c - 在没有浮点数的情况下处理 C 中的小数
- mono - Mono:我的 GTK 应用程序可以在 Windows-64 位上执行吗?
- python - 从 0.0007 中提取有效数字
- android - Android 模拟器网络配置错误。与官方记录的设置不同。为什么以及如何改变?
- python - 拆分 CSV 文件时出现标题问题 [Python 3]
- angular - 多个转换属性在模板中不起作用
- ecmascript-6 - 为什么 babeljs.io 输出与 gulp-babel 输出不同?
- javascript - 变量的范围