¿Cómo incrementar y guardar un objeto en la base de datos de mongodb con node js?
Estoy intentando incrementar la cantidad de un objeto dentro de un array de una base de datos de mongodb y luego guardarlo de esta manera:
await user.cart.items.find((cada) => {
if (JSON.stringify(cada._id) === JSON.stringify (productId)) {
if (cada.instock > cada.quantity) {
cada.quantity += 1;
console.log("Incrementado");
}
}
});
console.log(user.cart.items);
await user.save();
Cuando hago un log con la consola user.cart.items
, el campo de cantidad se incrementa correctamente, pero cuando voy a la base de datos, no lo está. Básicamente, el código await user.save();
no parece estar funcionando.
¿Cómo puedo guardar el objeto recién actualizado en la base de datos de mongodb con node js?
davy.ai
Para guardar el objeto recién actualizado en la base de datos MongoDB con Node.js, deberás utilizar la biblioteca mongoose, específicamente el método
save()
.Suponiendo que ya has establecido una conexión a tu base de datos y definido un esquema mongoose para tu modelo de usuario
user
, el código se vería algo así:Este código primero modifica el objeto
each.quantity
en el arreglocart.items
y lo marca como modificado utilizando el métodouser.markModified('cart.items')
. Esto indica a Mongoose que el arreglouser.cart.items
ha cambiado y necesita ser guardado.Finalmente, se utiliza el método
user.save()
para guardar el objetouser
actualizado de vuelta en la base de datos. La función de devolución de llamadafunction (err, updatedUser)
registra el arreglouser.cart.items
actualizado en una operación de guardado exitosa o un posible error si la operación de guardado falló.