Reputation: 1151
What is the best way, or any way really to insert data for two separate tables and a join table in node/sequelize cli
i.e. i have a addresses table, I add in this
const faker = require('faker');
const models = require('./server/db/sequelize/models');
const States = models.States;
const Addresses = models.Addresses;
module.exports = {
up: (queryInterface) => {
return Promise.all([
for (let i = 0; i < 1000; i++) {
Addresses.create({
streetName: faker.address.streetAddress(),
streetNameAlt: faker.address.streetAddress(),
zipCode: faker.address.zipCode(),
town: faker.address.county(),
city: faker.address.city(),
stateId: id,
addressTypeId: 1,
createdAt: faker.date.recent(),
updatedAt: faker.date.recent(),
});
}
},
down: (queryInterface) => {
return queryInterface.bulkDelete('Addresses', null, {});
}
};
However when i generate a user, i'd like to select a random address from my address table as addressId and create a joint record of that
i.e.
const faker = require('faker');
const usersList = [];
for (let i = 0; i < 1000; i++) {
const userObj = {
email: faker.internet.email(),
password: faker.internet.password(),
name: faker.name.findName(),
gender: 'Male',
description: '',
location: faker.address.streetAddress(),
website: faker.internet.url(),
};
usersList.push(userObj);
}
Seperate code
UserAddress.create({
userId: userId,
addressId: addressId
});
Upvotes: 3
Views: 3277
Reputation: 79
//Another way to do this, easy and fast with random data
'use strict';
var faker = require("faker");
module.exports = {
up: (queryInterface, Sequelize) => {
var newData = [];
for (let i = 0; i < 10; i++) {
const seedData = {
country_name: faker.address.country(),
country_code: faker.address.countryCode(),
createdAt: new Date(),
updatedAt: new Date()
};
newData.push(seedData);
}
return queryInterface.bulkInsert('Countries', newData);
},
down: (queryInterface, Sequelize) => {
return queryInterface.bulkDelete('Countries', null, {});
}
};
Upvotes: 6
Reputation: 1152
You could simply query the list of address', put all the IDs in an array and pick one at random
const allAddress = models.Addresses.findAll();
const allIds = allAddress.map(x => x.id);
const rand = allIds[Math.floor(Math.random() * allIds.length)];
UserAddress.create({
userId: userId,
addressId: rand
});
Upvotes: 0