Rah*_*ran 5 postgresql node.js sequelize.js sequelize-cli
我正在使用 sequelize cli 和 sequelize 为多对多连接表生成种子文件
在这里,我将用户和集合以及 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, {}),
};
用户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, {});
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3999 次 |
| 最近记录: |