不会按预期在数据库上创建外键

时间:2019-04-12 20:08:10

标签: node.js postgresql sequelize.js

I have this

鉴于此ERD,我试图找出为什么未在documentChildrendocumentAttribute上创建外键的原因,因为它们各自都有一列,该列应为document的FK

我的续集模型都运行良好,但是我很好奇我在做错什么,因为没有生成真正的FK。

文档迁移:

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

documentChildren迁移:

'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'
        }
      },
      ...
    })
  }
  ...
}

documentAttribute迁移:

'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

1 个答案:

答案 0 :(得分:1)

您的代码显示

def normalize(val):
    if val < 100:
        return 1
    elif val > 100 and val < 350:
        return 2
    else:
        return 3

df['NO2'] = df['NO2'].apply(normalize)

"documentId" uuid NOT NULL REFERENCES documents(id) 是FK。选中postgresql-docs

您对索引的创建感到困惑,但这并不意味着拥有FK。