我目前正在尝试使用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中调用同一部分代码,则可以使用,但是作为数据库迁移脚本,它将不接受外键。
预先感谢您的任何建议。