Para brindarle una descripción general rápida, estoy tratando de obtener una consulta de actualización en mi aplicación express/node/mongoose que podría actualizar x cantidades de datos de tarjetas en una sola consulta (donde x podría ser 0 o + infinito).
Así es como se ve el archivo JSON en este momento:
{ "deck_id": "621f7c8cae4ba99300a29cef", "cards": [ { "_id": "621f2f403e96942c55acfa71", "review_lapse": "test" }, { "_id": "621f3d533e96942c55acfb1f", "review_lapse": "test" } ] } Cada objeto representa una tarjeta única (ver clave _id )
Y aquí está el método en mi controlador (muy ineficiente ya que uso un ciclo foreach, obviamente no muy escalable si tuviera 10.000 tarjetas):
module.exports.updateReviewLapse = updateReviewLapse = async (req, res, next) => { try{ let updates = req.body.review_update; updates.forEach(async item => { let card = await UserDeckCard.findOneAndUpdate( { _id: item._id }, { $set: { review_lapse: item.review_lapse }}, { new: true } ) console.log(card) }) return res.status(200).json("ok") } catch (err){ return res.status(500).json({ message: "" + err })} }Pensé en cambiar el archivo JSON, pero eso no dio ningún resultado convincente, ni usé Promise.all y no pude lograr nada con updateMany.
Gracias de antemano por tu ayuda