为多个关系表续集js orm播种机

问题描述 投票:1回答:1

我将为postgres的初始数据加载如此续集种子。我可以通过创建种子file.js.But来为多个表做它。我无法自动处理表之间的关系。

 // user_seeds.js
    up: function (queryInterface, Sequelize) {
      return queryInterface.bulkInsert(table, [{
        uid: 1, //primary key autogenerated 
        name: 'John doe',
        email: '[email protected]',
        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: '[email protected]',
        created_at,
        updated_at
      }, {
        id: 2,
        name: 'user',
        created_at,
        updated_at
    }]);

如何在没有硬编码的情况下自动将主键作为外键传递给另一个表。

javascript node.js postgresql seed sequelize-cli
1个回答
0
投票

你必须使用一个播种机与returning = true一起使用。以下是一个例子。您可能需要使用sequelize模型而不是在某些地方直接使用queryInterface

// user_and_role_seeds.js
up: function (queryInterface, Sequelize) {
    return UserModel.bulkCreate([{
        uid: 1, // primary key autogenerated 
        name: 'John doe',
        email: '[email protected]',
        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: '[email protected]',
            created_at,
            updated_at
        }, {
            id: users[1].uid,
            name: 'user',
            created_at,
            updated_at
        }]);
    });
}
  • Sequelize版本:4.x
  • Postgres版本:11.x
© www.soinside.com 2019 - 2024. All rights reserved.