2017-11-18 1 views
0

I sequelize cli mit sequelize bin mit einem Seeder-Datei für eine viele zu viele Join-Tabelle als die Tabelle beitretenWie eine Zeile mit Verein durch sequelize queryinterface einfügen

Hier habe ich Benutzer und Sammlungen und User_Collections I zu erzeugen, Ich habe bereits Seed-Dateien für Benutzer und Sammlungen erstellt, möchte aber eine Seed-Datei für die Join-Tabelle erstellen. Wie kann ich dynamisch die ID der Zeile in User- oder Sammlung, so dass ich diesen Wert in der Join-Tabelle bulkinsert

Benutzer einfügen können:

 


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

 

Sammlung

 


    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, {}), 
    }; 

 

Antwort

2

Benutzer queryInterface.sequelize zu Holen Sie sich das sequelize Objekt, dann fragen Sie die id Sie benötigen.

'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, {}); 
    } 
}; 
Verwandte Themen