我正在尝试查询与用户关联的所有商家。
共有三张表:user_tbl
、 user_favorite_tbl
和 merchant_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/