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

450
Visualizações
MongoDB Node.js Driver 4.0.0: problemas de identificación de sesión de cursor en producción en Vercel

Actualizar mi aplicación alojada en Vercel al nuevo controlador MongoDB (4.0) ha introducido errores esporádicos como este:

MongoServerError: Cursor session id ([session hash])is not the same as the operation context's session id (none)

He jugado con el script de conexión y almacenamiento en caché de MongoDB según lo recomendado por Vercel/Next https://github.com/vercel/next.js/blob/canary/examples/with-mongodb/lib/mongodb.js pero el problema continúa.

No estoy lo suficientemente claro sobre cuáles son los cambios en el nuevo controlador que podrían estar introduciendo esto, pero se solucionó volviendo a 3.6.10.

El problema parece ocurrir cuando se realiza una solicitud más de 30 segundos después de una consulta idéntica de la misma función de Node.js.

Mi código de conexión db:

 import { MongoClient } from "mongodb"; let uri = process.env.MONGODB_URI; let dbName = process.env.MONGODB_DB; let cached = global.mongo; if (!cached) { cached = global.mongo = { conn: null, promise: null }; } export async function connectToDatabase() { if (cached.conn) { return cached.conn; } if (!cached.promise) { const opts = { useNewUrlParser: true, useUnifiedTopology: true, }; cached.promise = MongoClient.connect(uri, opts).then((client) => { return { client, db: client.db(dbName), }; }); } cached.conn = await cached.promise; return cached.conn; }

Editar: este error en el controlador v4 Node.js se corrigió en 4.2.1

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Tengo el mismo error cuando uso collection.find() con una gran colección, y desaparece después de cambiarlo a collection.find().limit(100) , solo para su referencia.

over 4 years ago · Santiago Trujillo Relatório

0

También enfrentamos este error recientemente y otra posible solución que nos ayudó es pasar explícitamente la sesión a la consulta. También está escrito en el ticket correspondiente . Por ejemplo, si usa .find , entonces puede tener algo como esto:

 const session = mongoClient.startSession(); try { const query = await collection.find({}, { session }); } finally { await session.endSession(); }
over 4 years ago · Santiago Trujillo 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