Sequelize - 使用 include 生成错误的 sql 请求,带有一个基本示例

问题描述 投票:0回答:1

我对sequelize V6 和一个非常基本的一对多关联示例有疑问。

我的协会:

    this.coupleTable.hasMany(this.userTable);
    this.userTable.belongsTo(this.coupleTable);

什么在起作用:

  1. 在userTable中成功创建了外键“actionId”,它引用了pairTable的id。

  1. 我可以使用 getCouple() 通过两个请求检索一个用户和他的夫妇。
    const user = await db.userTable.findByPk(userId);
    const couple = await user?.getCouple();

什么不起作用

--> 我无法通过 eager 获取(即一个请求)检索一个用户及其夫妇。

const userWithCouple = await db.userTable.findByPk(userId, { include: db.coupleTable });

生成的sql请求使用了错误的JOIN子句,与我的预期完全相反。

而不是:

左外连接 user. CoupleId = Couple.id

我们有:

左外连接 user.id = Couple. CoupleId

但是,我的示例似乎非常适合文档:doc-eagerLoading-V6

我在这里做错了什么?

谢谢您的帮助。

join sequelize.js include associations
1个回答
0
投票

很长时间才发现问题只出现在玩笑测试中

负责人在这里:

jest.resetModules();

-> 如果您遇到类似的问题,并且有 sequelize with jest 的奇怪行为,只需不要重置模块,或者找到一种替代方法来仅重置您想要的内容。

为什么?

我不知道。这可能是一个错误,也可能不是。也许读过这篇文章的人会有答案。

在我看来,这是一个错误。因为一切都工作正常(急切获取一个 -> 许多,具有 hasMany、关联、BelongsToGetAssociation 等),但不是急切获取多个 -> 一个 (belongsTo)。

© www.soinside.com 2019 - 2024. All rights reserved.