如何通过sequelize queryInterface插入关联行
How to insert a row with association through sequelize queryInterface
我正在使用带有 sequelize 的 sequelize cli 为多对多连接生成种子文件 table
这里我有用户和 Collections 和 User_Collections 作为连接 table
我已经为用户和 Collection 创建了种子文件,但我想为加入 table 创建种子文件。如何动态访问 User 或 Collection 中行的 ID,以便我可以将该值插入到联接 table 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, {}),
};
Collection
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, {});
}
};
我正在使用带有 sequelize 的 sequelize cli 为多对多连接生成种子文件 table
这里我有用户和 Collections 和 User_Collections 作为连接 table 我已经为用户和 Collection 创建了种子文件,但我想为加入 table 创建种子文件。如何动态访问 User 或 Collection 中行的 ID,以便我可以将该值插入到联接 table 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, {}),
};
Collection
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, {});
}
};