Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
Establecer callbackWaitsForEmptyEventLoop en la API de Nextjs

Me gustaría establecer callbackWaitsForEmptyEventLoop en false en mi controlador Nextjs, pero a su firma le falta el contexto.

El objetivo es configurar correctamente nextjs, mongoDB, mongoose para evitar cualquier problema de rendimiento cuando se implementa en aws-lambda. He estado buscando y parece que la mayoría de los ejemplos de opciones están desactualizados y no se aplican a mongoose 6. Dado que la conexión se realiza dentro de aws-lambda y se almacena en caché, ¿sigue siendo necesario cerrar las conexiones manualmente?

Configuración actual basada en varias recomendaciones:

 // useDb options export const useDbOptions = { useCache: true, noListener: true, }; // Schema options export const useSchemaOptions = { autoIndex: true, bufferCommands: false, }; // Cached connection outside of handler let conn: Promise<typeof mongoose> | null = null; // Mongoose options mongoose.connect(mongoDbUri, { bufferCommands: false, })

A la firma del controlador de Nextjs le falta el context :

 async function handler(req: NextApiRequest, res: NextApiResponse) { ... }

Por recomendaciones de mongoose doc:

 const mongoose = require('mongoose'); let conn = null; const uri = 'YOUR CONNECTION STRING HERE'; exports.handler = async function(event, context) { // Make sure to add this so you can re-use `conn` between function calls. // See https://www.mongodb.com/blog/post/serverless-development-with-nodejs-aws-lambda-mongodb-atlas context.callbackWaitsForEmptyEventLoop = false; // Because `conn` is in the global scope, Lambda may retain it between // function calls thanks to `callbackWaitsForEmptyEventLoop`. // This means your Lambda function doesn't have to go through the // potentially expensive process of connecting to MongoDB every time. if (conn == null) { conn = mongoose.createConnection(uri, { // and tell the MongoDB driver to not wait more than 5 seconds // before erroring out if it isn't connected serverSelectionTimeoutMS: 5000 }); // `await`ing connection after assigning to the `conn` variable // to avoid multiple function calls creating new connections await conn; conn.model('Test', new mongoose.Schema({ name: String })); } const M = conn.model('Test'); const doc = await M.findOne(); console.log(doc); return doc; };

Sin embargo, callbackWaitsForEmptyEventLoop no está configurado en su ejemplo de ayuda:

 'use strict'; const mongoose = require('mongoose'); let conn = null; const uri = 'YOUR CONNECTION STRING HERE'; exports.connect = async function() { if (conn == null) { conn = mongoose.createConnection(uri, { serverSelectionTimeoutMS: 5000 }); // `await`ing connection after assigning to the `conn` variable // to avoid multiple function calls creating new connections await conn; } return conn; };

Versiones del paquete:

 "mongodb": "^4.3.0", "mongoose": "^6.1.6",
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda