5

我正在使用带有 sequelize 的 sequelize cli 为多对多连接表生成种子文件

在这里,我将用户和集合以及 User_Collections 作为连接表我已经为用户和集合创建了种子文件,但我想为连接表创建一个种子文件。如何动态访问 User 或 Collection 中行的 id,以便可以将该值插入连接表 bulkinsert

用户:



    module.exports = {
      up: (queryInterface, Sequelize) => queryInterface.bulkInsert('Users', [ {
        first_name: 'John',
        last_name: 'Doe',
        email: 'john.doe@gmail.com',
        password: 'testme',
        createdAt: new Date(),
        updatedAt: new Date(),
      }], {}),
      down: (queryInterface, Sequelize) => queryInterface.bulkDelete('Users', null, {}),
    };


收藏



    module.exports = {
      up: (queryInterface, Sequelize) => queryInterface.bulkInsert('Collections', [{
        collection_name: 'Test Collection1',
        createdAt: new Date(),
        updatedAt: new Date(),
      }, {
        collection_name: 'Test Collection2',
        createdAt: new Date(),
        updatedAt: new Date(),
      }, {
        collection_name: 'Test Collection3',
        createdAt: new Date(),
        updatedAt: new Date(),
      }]),

      down: (queryInterface, Sequelize) => queryInterface.bulkDelete('Collections', null, {}),
    };


4

1 回答 1

4

用户queryInterface.sequelize获取sequelize对象,然后查询id您需要的。

'use strict';
var Promise = require("bluebird");

module.exports = {
  up: (queryInterface, Sequelize) => {
    var sequelize = queryInterface.sequelize;
    return Promise.all([
    sequelize.query('SELECT id FROM users', { type: sequelize.QueryTypes.SELECT}),
    sequelize.query('SELECT id FROM collections', { type: sequelize.QueryTypes.SELECT}),
    ]).spread((userids, collectionsids)=>{
      var user_collections = [];
      userids.forEach(userId=> {
        collectionsids.forEach(collectionId =>{
              user_collections.push({
                user_id: userId.id,
                collection_id: collectionId.id,
                createdAt: new Date(),
                updatedAt: new Date(),
              })
        });
      });
      return queryInterface.bulkInsert('User_Collections', user_collections, {});
    })
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.bulkDelete('User_Collections', null, {});
  }
};
于 2017-11-19T09:41:55.080 回答