Sequelize bull crea con un id común basado en los datos previamente insertados.
Estoy intentando insertar los siguientes datos utilizando sequelize y nodejs en mi base de datos.
{
“basicDetails”: {
“companyName”: “demo”,
“email”: “demo5@demo.com”,
“phone”: “5019918819”,
“address”: “manab”,
“pincode”: “400078”,
“city”: “Mumbai”,
“state”: “Maharashtra”
},
“subOffices”: [
{
“subofficename”: “bpo”,
“location”: “random”
},
{
“subofficename”: “fintech”,
“location”: “worli”
}
],
“companyUsers”: [
{
“userName”: “Random user”,
“userEmail”: “random@us.com”,
“userPhone”: “0000000000”
},
{
“userName”: “Demo User”,
“userEmail”: “demo@us.com”,
“userPhone”: “1111111111”
}
]
}
Básicamente tengo 3 tablas:
- Cliente (id)
- SubOficinas (clave foránea es el id de cliente)
- CompanyUsers (clave foránea es el id de cliente)
Los detalles básicos se almacenarán en una tabla de clientes y utilizando el ID de esos datos. Me gustaría insertar las suboficinas y los usuarios de la empresa en sus respectivas tablas donde la clave foránea sería el ID que obtengo al insertar mis detalles básicos en la tabla de clientes.
Puedo insertar los detalles básicos en la tabla de clientes y obtener la identificación de esos datos. Me gustaría hacer una inserción masiva utilizando sequelize incluyendo la ID que obtengo de los datos del cliente como una clave foránea para él.
router.post(“/addClient”, async function(req, res) {
const basicdetails = req.body.basicDetails;
console.log(basicdetails);
const subofficesData = […req.body.subOffices];
const companyusers = […req.body.companyUsers];
console.log(“suboffices: ” + suboffices);
subofficesData.forEach(item => console.log(item));
companyusers.forEach(item => console.log(item));
const data = await client.create({
companyName: basicdetails.companyName,
email: basicdetails.email,
mobileNumber: basicdetails.phone,
address: basicdetails.address,
pincode: basicdetails.pincode,
city: basicdetails.city,
state: basicdetails.state,
});
console.log(data.id);
const subofficesResult = await suboffices.bulkCreate(subofficesData, {
clientId: data.id,
});
console.log(subofficesResult);
// console.log(req.body.suboffices);
});
davy.ai
Para realizar una inserción masiva usando Sequelize para suboficinas y usuarios de empresas, puede utilizar el método
bulkCreate()
. Puede pasarsubofficesData
ocompanyusers
como el primer argumento a este método y un objeto de opciones como segundo argumento que contengaclientId: data.id
para relacionar las entradas con la entradaCliente
correspondiente en la base de datos.Aquí hay un ejemplo de código:
En este fragmento de código, estamos mapeando los arrays
subofficesData
ycompanyusers
, y creando un nuevo objeto para cada entrada con el campoclientId
establecido endata.id
.Luego, pasamos estos arrays modificados al método
bulkCreate()
junto con el objeto de opciones de{ clientId: data.id }
para insertar los registros con la clave externa correcta como la entradaCliente
que acabamos de crear.También hemos agregado una respuesta JSON al final para que pueda ver el resultado de todas las inserciones.
Esperamos que esto le ayude a lograr su objetivo de insertar los datos usando Sequelize y NodeJS en su base de datos.