Sequelize Migrations: добавление ограничения внешнего ключа к столбцу в той же таблице - PullRequest
0 голосов
/ 27 февраля 2019

Итак, я пытаюсь создать таблицу с ограничениями внешнего ключа для себя в файле миграции.

Я попробовал то, что мог, следуя документам sequelize , и ниже приведен код IЯ пытался, и я также пытался переместить ссылки на внешние ключи туда, где были определены атрибуты, но он также не работает там.Есть ли способ сделать то, что я хочу сделать здесь?

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('comments', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      root_id: {
        defaultValue: null,
        type: Sequelize.INTEGER
      },
      parent_id: {
        defaultValue: null,
        type: Sequelize.INTEGER
      },
    }).then(() => queryInterface.addConstraint(
      'comments',
      ['root_id'],
      {
        type: 'foreign key',
        name: 'root_id_fk',
        references: {
          table: 'comments',
          field: 'root_id'
        },
        onDelete: 'cascade',
        onUpdate: 'cascade'
      }
    )).then(() => queryInterface.addConstraint(
      'comments',
      ['parent_id'],
      {
        type: 'foreign key',
        name: 'parent_id_fk',
        references: {
          table: 'comments',
          field: 'parent_id'
        },
        onDelete: 'cascade',
        onUpdate: 'cascade'
      }
    ))
  },

1 Ответ

0 голосов
/ 27 февраля 2019

Я понял, что я делаю неправильно, я пытался создать внешний ключ для ссылки на себя в той же таблице, когда я должен был ссылаться на другой столбец.Woops!

...