javascript - 尝试使用连接器表连接 Sequelize 中的两个数据库表

标签 javascript postgresql typescript sequelize.js

我正在尝试查询与用户关联的所有商家。

共有三张表:
user_tbluser_favorite_tblmerchant_tbl
对于每个,我都创建了一个 Sequelize 实例。

用户、用户收藏夹和商家。

我正在尝试执行一个查询,该查询将让我每个用户都通过 user_favorite_tbl 收藏每个商家。

这是我的代码:

public async fetch_user_with_favorite() {
    let favMerchants = await User.findAll({
        attributes: ["given_name", "family_name", "email"],
        include: [
            {
                model: UserFavorite,
                attributes: ["merchant_id"],
                include: [
                    {
                        model: Merchant,
                        attributes: ["name"]
                    }
                ]
            }
        ]
    });
    return favMerchants;
}


User.belongsToMany(Merchant, { through: "user_favorite_tbl" });
Merchant.belongsToMany(User, { through: "user_favorite_tbl" });

但是,当我尝试调用与此代码关联的端点时,出现以下错误:
SequelizeEagerLoadingError: user_favorite_tbl is not associated to user_tbl!

当我尝试添加此内容时:
User.hasMany(UserFavorite, { foreignKey: "user_id" });
Merchant.hasMany(UserFavorite, { foreignKey: "merchant_id" });

我收到此错误:
SequelizeEagerLoadingError: merchant_tbl is not associated to user_favorite_tbl!

我到底哪里错了?

最佳答案

您可以定义关联如下 -
使用两个一对多关系可以实现多对多关系,如下所示 -

User.hasMany(UserFavorite, { foreignKey: 'user_id', targetKey: 'id'});
UserFavorite.hasMany(User,{ foreignKey: 'user_id',targetKey: 'id'});
Merchant.hasMany(UserFavorite, { foreignKey: 'merchant_id', targetKey: 'id'});
UserFavorite.hasMany(Merchant,{ foreignKey: 'merchant_id',targetKey: 'id'});

关于javascript - 尝试使用连接器表连接 Sequelize 中的两个数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59722536/

相关文章:

javascript - 我可以使用 ajax 在 2 个 Android 设备之间发送和检索数据吗?

javascript - 根据选定的下拉列表值创建动态复选框

javascript - 从文本文件中读取特定数据

javascript - 如何显示使用 jquery 动态检查的字段数量

generics - 如何检查元素是否是 U 的实例?

css - 将背景应用于元素 :after dynamically with ngStyle

visual-studio - 为 TypeScript 编译器提供了一个空的配置字符串

sql - PostgreSQL 条件 where 子句

postgresql - sql 如何为每个州选择最受欢迎的项目

postgresql - PostgreSQL 版本在 Kali/Debian 上安装 OpenVAS 问题