使用外键从JSON继承createBulk

时间:2018-08-16 15:07:25

标签: javascript postgresql ecmascript-6 foreign-keys sequelize.js

我目前正在尝试使用JSON文件作为种子将数据插入到pgSQL数据库中。

我的模型是这样定义的:

import Sequelize from 'sequelize'

const model = 'user_role'
const tableName = 'users_roles'

const Model = {
  model,
  fields: {
    uuid: {
      type: Sequelize.UUID,
      defaultValue: Sequelize.UUIDV4,
      primaryKey: true
    },
    role: {
      type: Sequelize.STRING,
      allowNull: false
    },
    creation: {
      type: Sequelize.DATE,
      allowNull: false,
      defaultValue: Sequelize.NOW
    }
  },
  params: {
    'timestamps': false,
    'paranoid': false,
    'underscored': true,
    'freezeTableName': true,
    tableName,
    indexes: [{
      unique: true,
      fields: ['role', 'user_uuid']
    }]
  }
}

export { Model as UserRoleModel }

此JSON文件的定义如下:

[
    {
      "uuid": "9d8eb916-f18e-4d85-8762-4ee7c1ac8b68",
      "role": "user",
      "user_uuid": "a7a5dd37-62a4-4a57-9b73-f6d3536d771f"
    },
    {
      "uuid": "3747ee97-2296-4c6d-9c99-3f2e6dcd2d78",
      "role": "admin",
      "user_uuid": "a7a5dd37-62a4-4a57-9b73-f6d3536d771f"
    },
    {
      "uuid": "3747ee97-2296-4c6d-9c99-3f2e6dcd2d79",
      "role": "test",
      "user_uuid": "a7a5dd37-62a4-4a57-9b73-f6d3536d771f"
    }
]

而且我有一个函数可以为Model提供数据源。

import Sequelize from 'sequelize'

const seedData = async ({ model, seeds } ) => await model
  .destroy({ where:{} })
  .then(async () => await model.bulkCreate(seeds))

export { seedData }

它在本地与SQLite一起很好地工作,但与pgSQL不一起工作。不会插入外键。

我的fkey关系定义如下:

  await UserRole.belongsTo(User, { foreignKey: 'user_uuid', onDelete: 'cascade' })

  await UserRole.sync({ force })

在我的代码中,如果我在API中调用同一部分代码,则可以使用,但是作为数据库迁移脚本,它将不接受外键。

预先感谢您的任何建议。

0 个答案:

没有答案