将关联关联到同一张表

时间:2019-04-16 21:33:40

标签: javascript node.js sequelize.js

我有一个名为std::unique_ptr的表,该表具有一个称为documents的列,该列是对另一个parentId记录的引用。

使用我当前的代码,我得到了错误

document

文档迁移

insert or update on table "documents" violates foreign key constraint "documents_parentId_fkey"

文档模型

'use strict'
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('documents', {
      id: {
        allowNull: false,
        primaryKey: true,
        type: Sequelize.UUID,
        defaultValue: Sequelize.UUIDV4
      },
      parentId: {
        allowNull: true,
        type: Sequelize.UUID,
        references: {
          model: 'documents',
          key: 'id'
        }
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      lastUpdatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      lastUpdatedBy: {
        allowNull: false,
        type: Sequelize.UUID
      }
    })
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('documents')
  }
}

您如何正确地关联同一张桌子?

2 个答案:

答案 0 :(得分:0)

I have a self referencing table configured with the constraints: false setting.

MyModel.belongsTo(MyModel, {
  as: 'parentMyModel',
  foreignKey: 'parentId',
  constraints: false,
});

答案 1 :(得分:0)

看起来约束是有效的(也是很好的约束)。我提交的有效载荷有一个父uuid,该uuid实际上未引用任何具有该ID的文档。

所以我的代码是正确的,我提交的数据是错误的。