Sequelize 和 Postgres - 外键约束“...”无法实现

Sequelize and Postgres - foreign key constraint "..." cannot be implemented

我正在尝试将两个外键添加到我的事务中 table,其中一个可以正常工作,但第二个无法实现。 有没有办法设置外键数组?我想问题出在数组上,因为它是唯一不同的东西。

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
      return queryInterface.createTable('transactions', { 
        id: 
        {
             type: Sequelize.INTEGER,
             primaryKey: true,
             autoIncrement: true,
             allowNull: false,
        },
        value:
        {
          type: Sequelize.FLOAT,
          allowNull: false,
        },
        clientId:
        {
          type: Sequelize.INTEGER,
          allowNull: true,
          references: { model: 'client', key: 'id'},
          onUpdate: 'CASCADE',
          onDelete: 'CASCADE'
        },
        productId:
        {
          type: Sequelize.ARRAY(Sequelize.INTEGER),
          allowNull: false,
          references: { model: 'products', key: 'id'},
          onUpdate: 'CASCADE',
          onDelete: 'CASCADE'
        },
        createdAt:
        {
          type: Sequelize.DATE,
          allowNull: false,
        },
        updatedAt: 
        {
          type: Sequelize.DATE,
          allowNull: false,
        }
      });
  },

  down: (queryInterface, Sequelize) => {
      return queryInterface.dropTable('transactions');
  }
};

代码分数:

是的,您的外键实际上可能是 VARCHAR 或 BIGINT 或类似的东西...它可能会窒息而死...您的模型最终将具有 hasMany 关系或处理事实上,您可能通过某种类型的连接 table 将许多产品与交易相关联....因此您的 table 可能类似于交易、产品,transaction_product 具有已建立的关系

transaction.hasMany(product, {as: "Products", through: "transaction_product", foreignKey: "transaction_id"}

并且您的产品型号可能类似于

product.belongsToMany(transaction, {as: "Transactions", through: "transaction_product", foreignKey: "product_id"}

这将解决您可能试图弥补的许多问题