我将为postges的初始数据加载设置sequelize seed。我可以通过创建seedfile.js来为多个表执行此操作。但是我无法自动处理表之间的关系。
// user_seeds.js
up: function (queryInterface, Sequelize) {
return queryInterface.bulkInsert(table, [{
uid: 1, //primary key autogenerated
name: 'John doe',
email: 'john@doe.com',
created_at,
updated_at
}], {});
// roles_seeds.js
up: function (queryInterface, Sequelize) {
return queryInterface.bulkInsert(table, [{
uid: 1, //this should be comes from user table to this filed automatically after the creation of first record in user table
name: 'admin',
email: 'john@doe.com',
created_at,
updated_at
}, {
id: 2,
name: 'user',
created_at,
updated_at
}]);
如何在没有硬编码的情况下自动将主键作为外键传递给另一个表。
答案 0 :(得分:0)
您必须在returning = true
旁边使用一个播种机。以下是一个例子。您可能需要使用续集模型,而不是在某些地方使用queryInterface
。
// user_and_role_seeds.js
up: function (queryInterface, Sequelize) {
return UserModel.bulkCreate([{
uid: 1, // primary key autogenerated
name: 'John doe',
email: 'john@doe.com',
created_at,
updated_at
}], {returning: true}).then(function(users){
return queryInterface.bulkInsert(table, [{
uid: users[0].uid, // Here you use users items
name: 'admin',
email: 'john@doe.com',
created_at,
updated_at
}, {
id: users[1].uid,
name: 'user',
created_at,
updated_at
}]);
});
}