Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

261
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!