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

265
Visualizações
Obteniendo "MongoExpiredSessionError: no se puede usar una sesión que finalizó" cuando se usa forEach para actualizar el documento, pero ¿por qué?

Solo estoy tratando de cambiar un par de valores clave, es decir, {mark: done} en mi base de datos Mongo usando la identificación que he almacenado en una matriz.

Pero por mi vida, no puedo entender por qué si uso un ciclo for funciona bien. Pero si uso un bucle forEach, aparece el error "No se puede usar una sesión que finalizó".

Espero que alguien me ayude a explicar por qué sucede esto.

Código repetitivo

 import { MongoClient } from "mongodb"; const uri = "mongodb://localhost:27018/"; const client = new MongoClient(uri);

Función con implementación "for loop"

 async function updateMongo1() { const db = client.db("testDB"); const coll = db.collection("testCollection"); await client.connect(); try { let array = [ "2021-10-18", "2021-10-17", "2021-10-16", "2021-10-15", "2021-10-14", ]; for (let i = 0; i < array.length; i++) { await coll.updateOne( { _id: array[i] }, { $set: { mark: "done" } }, { upsert: true } ); } } catch (e) { console.error(e.message); } finally { await client.close(); } }

Función con implementación "forEach"

 async function updateMongo2() { const db = client.db("testDB"); const coll = db.collection("testCollection"); await client.connect(); try { let array = [ "2021-10-18", "2021-10-17", "2021-10-16", "2021-10-15", "2021-10-14", ]; array.forEach(async (element) => { await coll.updateOne( { _id: element }, { $set: { mark: "done" } }, { upsert: true } ); }); } catch (e) { console.error(e.message); } finally { await client.close(); } }

ejecutar diferentes implementaciones produce resultados diferentes.

 (async () => { //await updateMongo1(); //-> this works await updateMongo2(); //-> this gives "MongoExpiredSessionError: Cannot use a session that has ended" what gives?? })();

Por favor, hágame saber por qué sucede esto.

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

0

La variable del elemento es una matriz, por ejemplo ["2021-10-18"] . En la segunda implementación, estaba destinado a acceder al element[0] pero lo olvidó, por lo que colocó una matriz en el campo _id.

No sé si eso es lo que está causando específicamente su error, pero es un error en la implementación.

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