¿cómo puedo establecer una devolución de llamada para el manejo de errores si la mangosta no es capaz de conectarme a mi base de datos?

sé de

connection.on('open', function () { ... });

pero hay algo como

connection.on('error', function (err) { ... });

?

  • Para cualquiera de tropiezo en esta pregunta, connection.on('error', function (err) { ... }); ahora se está implementando en 3.X.
InformationsquelleAutor pkyeck | 2011-07-13

4 Comentarios

  1. 111

    Cuando se conecta usted puede recoger el error en la devolución de llamada:

    mongoose.connect('mongodb://localhost/dbname', function(err) {
        if (err) throw err;
    });
    • Lo que si quiero que mi servidor para continuar funcionando, incluso si hay un error? Todo lo que he probado hasta ahora lanza un error y, a continuación, finaliza el programa.
    • Si obtiene un error aquí usted probablemente ya tiene un error de configuración o el servidor de DB es abajo… En cuyo caso lo más probable es que no se puede continuar con la aplicación de todos modos. Pero también es mejor reiniciar la aplicación cuando hay un error inesperado de todos modos – de otra manera en un estado desconocido.
    • Todas las consultas en la mangosta se almacenan, por lo que todos ellos deben ser ejecutada tan pronto como se vuelva a conectar a la db, lo que es bueno y no debe ser una causa de estado desconocido.
    • Esto no parece funcionar. Puedo alimentar a una mala uri y errar siempre devuelve undefined.
    • El error proviene de la Mangosta documentación para conectar() mongoosejs.com/docs/connections.html, que no especifica una devolución de llamada es posible.
    • es allí una manera de redirigir a la página y enviar un mensaje de error para el usuario?
    • Esto no funciona en las nuevas Mangosta versiones (3.X). Ver Asta la respuesta de una solución que funciona.

  2. 36

    hay muchos mangosta de devolución de llamada puede utilizar,

    JS:

    //CONNECTION EVENTS
    //When successfully connected
    mongoose.connection.on('connected', function () {  
      console.log('Mongoose default connection open to ' + dbURI);
    }); 
    
    //If the connection throws an error
    mongoose.connection.on('error',function (err) {  
      console.log('Mongoose default connection error: ' + err);
    }); 
    
    //When the connection is disconnected
    mongoose.connection.on('disconnected', function () {  
      console.log('Mongoose default connection disconnected'); 
    });
    
    //If the Node process ends, close the Mongoose connection 
    process.on('SIGINT', function() {  
      mongoose.connection.close(function () { 
        console.log('Mongoose default connection disconnected through app termination'); 
        process.exit(0); 
      }); 
    }); 

    más en: http://theholmesoffice.com/mongoose-connection-best-practice/

    • la devolución de llamada de error no proporciona el error más. es sólo un valor booleano diciendo la verdad.
  3. 21

    En caso de que alguien pasa a esto, la versión de la Mangosta estoy corriendo (3.4) funciona como se indica en la pregunta. Así que el siguiente puede devolver un error.

    connection.on('error', function (err) { ... });
    • incluso esto no funciona! el valor de err es sólo ‘true’. con no hay ninguna descripción de el error real.
  4. 2

    Tardanza en responderte, pero si quieres mantener en funcionamiento el servidor puede utilizar este:

    mongoose.connect('mongodb://localhost/dbname',function(err) {
        if (err)
            return console.error(err);
    });

Dejar respuesta

Please enter your comment!
Please enter your name here