【问题标题】:Sequelize js orm seeder for multiple relational table用于多个关系表的 Sequelize js orm 播种器
【发布时间】:2018-02-13 08:01:16
【问题描述】:

我要为 postges 的初始数据加载进行种子的后续处理。我可以通过创建 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
    }]);

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

【问题讨论】:

    标签: javascript node.js postgresql seed sequelize-cli


    【解决方案1】:

    您必须使用一台播种机以及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: '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
            }]);
        });
    }
    
    • 续集版本:4.x
    • Postgres 版本:11.x

    【讨论】:

    • 重要提示:返回:true 仅适用于 PostGreSQL 数据库
    • @Roel 我已经在使用 Postgres。我已经编辑了我的问题以添加 Sequelize 和 Postgres 的版本。
    猜你喜欢
    • 2014-10-23
    • 2020-10-08
    • 2021-11-13
    • 2019-09-06
    • 2019-01-10
    • 2017-10-27
    • 1970-01-01
    • 2017-12-29
    • 2015-12-23
    相关资源
    最近更新 更多