小编Sha*_*awn的帖子

如何解决 Sequelize 不支持复合外键的问题

我正在使用Sequelize(命中 PostgreSQL 数据库)开发高级查询。在纯 SQL 中这并不难,但我无法在 Sequelize 中使用它,部分原因是它们不支持复合外键。

描述我的问题的最好方法是用代码,所以我用我的问题的最小复制制作了一个存储库。您应该能够克隆它并按照自述文件中的说明在本地重现问题。基本上,如果您可以使查询无错误地运行并正确返回一个空的行数组,那么您就解决了我的问题:)

为方便起见,我将在此处复制查询和输出本身,但您可以检查 repo 以查看迁移、模型和 Sequelize 配置。

查询

const performQuery = (db) => {
  const { usersRoles, invitations } = db; // eslint-disable-line max-len

  const sql = {
    include: {
      model: invitations,
      on: {
        user: Sequelize.where(
          Sequelize.col('usersRoles.userUid'),
          '=',
          Sequelize.col('invitations.guestUid')),
        propertyManager: Sequelize.where(
          Sequelize.col('usersRoles.propertyManagerUid'),
          '=',
          Sequelize.col('invitations.propertyManagerUid')),
        tenant: Sequelize.where(
          Sequelize.col('usersRoles.tenantUid'),
          '=',
          Sequelize.col('invitations.tenantUid')),
      },
    },
  };
  return usersRoles.findAll(sql);
};
Run Code Online (Sandbox Code Playgroud)

输出(截断)

TypeError: Cannot read property 'toUpperCase' of undefined
    at str.trim.replace (/home/shawn/git/waltzapp/sequelize-troubleshooting/node_modules/sequelize/lib/utils.js:108:60)
    at RegExp.[Symbol.replace] (native) …
Run Code Online (Sandbox Code Playgroud)

postgresql foreign-key composite-types

7
推荐指数
1
解决办法
3215
查看次数

标签 统计

composite-types ×1

foreign-key ×1

postgresql ×1