代码之家  ›  专栏  ›  技术社区  ›  Catfish

Sequelize未按预期在db上创建外键

  •  0
  • Catfish  · 技术社区  · 7 年前

    I have this

    考虑到这个ERD,我试图找出为什么没有在上创建外键 documentChildren documentAttribute 因为它们都有一个列,应该是FK to document .

    我的续集模型都运作良好,但我很好奇,我做错了什么,在真正的FK的没有被生成。

    文档迁移:

    'use strict'
    module.exports = {
      up: (queryInterface, Sequelize) => {
        return queryInterface.createTable('documents', {
          id: {
            allowNull: false,
            primaryKey: true,
            type: Sequelize.UUID,
            defaultValue: Sequelize.UUIDV4
          },
          ...
        })
      }
      ...
    }
    

    'use strict'
    module.exports = {
      up: (queryInterface, Sequelize) => {
        return queryInterface.createTable('documentChildren', {
          id: {
            allowNull: false,
            primaryKey: true,
            type: Sequelize.UUID,
            defaultValue: Sequelize.UUIDV4
          },
          documentId: {
            allowNull: false,
            type: Sequelize.UUID,
            references: {
              model: 'documents',
              key: 'id'
            }
          },
          ...
        })
      }
      ...
    }
    

    文档属性迁移:

    'use strict'
    module.exports = {
      up: (queryInterface, Sequelize) => {
        return queryInterface.createTable('documentAttributes', {
          id: {
            allowNull: false,
            primaryKey: true,
            type: Sequelize.UUID,
            defaultValue: Sequelize.UUIDV4
          },
          documentId: {
            allowNull: false,
            type: Sequelize.UUID,
            references: {
              model: 'documents',
              key: 'id'
            }
          },
          ...
        })
      }
      ...
    }
    

    文档模型关联:

    document.associate = function (models) {
        document.hasMany(models.documentAttribute)
        document.hasMany(models.documentChildren)
      }
    

    enter image description here

    0 回复  |  直到 7 年前
        1
  •  1
  •   Gonzalo.-    7 年前

    你的代码显示

    "documentId" uuid NOT NULL REFERENCES documents(id)
    

    这个 REFERENCES documents(id) 是FK。检查 postgresql-docs

    推荐文章