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.
import { MongoClient } from "mongodb"; const uri = "mongodb://localhost:27018/"; const client = new MongoClient(uri); 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(); } } 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(); } } (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.
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.