javascript - tag - Secuela de actualización con asociación.
title tag html (3)
Primero tienes que encontrar un modelo que incluya un sub modelo que quieras actualizar. entonces puede obtener la referencia del submodelo para actualizar fácilmente. Estoy publicando un ejemplo para su referencia. Espero que ayude.
var updateProfile = { name: "name here" };
var filter = {
where: {
id: parseInt(req.body.id)
},
include: [
{ model: Profile }
]
};
Product.findOne(filter).then(function (product) {
if (product) {
return product.Profile.updateAttributes(updateProfile).then(function (result) {
return result;
});
} else {
throw new Error("no such product type id exist to update");
}
});
En la secuela es posible crear una fila y toda su asociación de una sola vez, como esta:
return Product.create({
title: ''Chair'',
User: {
first_name: ''Mick'',
last_name: ''Broadstone''
}
}, {
include: [ User ]
});
¿Hay un equivalente para la actualización? Lo intenté
model.user.update(req.body.user, {where: {id: req.user.user_id}, include: [model.profile]})
Pero solo está actualizando al usuario.
Haciendo esto para crear obras.
model.user.create(user, {transaction: t, include: [model.profile]})
Si desea actualizar ambos modelos (Producto y Perfil) a la vez. Uno de los enfoques puede ser:
// this is an example of object that can be used for update
let productToUpdate = {
amount: ''new product amount''
Profile: {
name: ''new profile name''
}
};
Product
.findById(productId)
.then((product) => {
if(!product) {
throw new Error(`Product with id ${productId} not found`);
}
product.Profile.set(productToUpdate.Profile, null);
delete productToUpdate.Profile; // We have to delete this object to not reassign values
product.set(productToUpdate);
return sequelize
.transaction((t) => {
return product
.save({transaction: t})
.then((updatedProduct) => updatedProduct.Profile.save());
})
})
.then(() => console.log(`Product & Profile updated!`))
await Job.update(req.body, {
where: {
id: jobid
}
}).then(async function () {
await Job.findByPk(jobid).then(async function (job) {
await Position.findOrCreate({ where: { jobinput: req.body.jobinput } }).then(position => {
job.setPositions(position.id)
})
})
Aquí la posición pertenece a muchos trabajos