Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

144
Visualizações
Manera correcta de hacer múltiples actualizaciones en una base de datos MongoDB

Tengo que recibir una matriz de Objetos y actualizar cada uno de ellos, por su _id , en mi base de datos MongoDB.

Tenía un método que insertaría un objeto cada vez que hiciera un HTTP PUT, así:

 router.post('/bet', function(req, res){ Bet.update(req.body) .then(dados => res.status(201).jsonp({dados: dados})) .catch(e => res.status(500).jsonp({error: 'erro'})) })

Donde update() se define como:

 module.exports.update = function(d){ return Bet.findByIdAndUpdate({_id: d._id}, d, {new: true}) }

Esto funciona bien cuando necesito actualizar una sola apuesta, pero para poder actualizar varias, creé esto:

 router.put('/bets', function(req, res){ req.body.forEach((obj) =>{ Bet.update(obj) .then(dados => res.status(201).jsonp({dados: dados})) .catch(e => res.status(500).jsonp({error: e})) }) })

¿Es esto correcto? Estoy teniendo muchos problemas, que sinceramente creo que provienen de hacer muchas solicitudes diferentes al mismo tiempo, pero me gustaría comenzar garantizando que este primer paso se realiza correctamente.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No, es probable que esta no sea la forma correcta. Está enviando una respuesta al cliente en el momento en que se realiza una sola actualización.

Agregaría un método updateMany así:

 module.exports.updateMany = function(arr){ return Promise.all(arr.map(d => Bet.findByIdAndUpdate(d._id, d, {new: true}))) }

El método usa Array#map() para crear una matriz de Promesas, que se resuelven una vez que se realiza la actualización y luego usa Promise.all() para brindar la capacidad de esperar a que se realicen todas las promesas.

Se resuelve una vez que se realizan todas las actualizaciones o se rechaza cuando falla alguna actualización.

(Nota: no tiene que especificar un objeto de consulta como {__id:id} para findByIdAndUpdate() )

Luego puede igualar eso desde su ruta de apuestas:

 router.put('/bets', function(req, res){ Bet.updateMany(req.body) .then(promiseArray => res.status(201).jsonp({dados: promiseArray})) .catch(e => res.status(500).jsonp({error: e})) })
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda