node.js - proyecto - nodejs en produccion
Cierre correctamente la conexión de la mangosta una vez que haya terminado (5)
Estoy usando la versión 4.4.2 y ninguna de las otras respuestas funcionó para mí. Pero agregar useMongoClient
a las opciones y ponerlo en una variable a la que llamas de close
pareció funcionar.
var db = mongoose.connect(''mongodb://localhost:27017/somedb'', { useMongoClient: true })
//do stuff
db.close()
Estoy usando mangosta en un script que no debe ejecutarse continuamente, y estoy enfrentando lo que parece ser un problema muy simple, pero no puedo encontrar una respuesta; simplemente pongo una vez que hago una llamada a cualquier función de mangosta que envía solicitudes a mongodb. Mi instancia de nodejs nunca se detiene y tengo que matarla manualmente con, por ejemplo, Ctrl + c o Program.exit ().
El código se ve más o menos así:
var mongoose = require(''mongoose'');
// if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ?
mongoose.connect(''mongodb://localhost:27017/somedb'');
// define some models
// if I include this line for example, node never stop afterwards
var MyModel = mongoose.model(''MyModel'', MySchema);
Intenté agregar llamadas a mongoose.disconnect () pero no al resultado. Aparte de eso, todo funciona bien (encontrar, guardar, ...).
Este es exactamente el mismo problema que esta persona, lamentablemente no recibió ninguna respuesta: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
Gracias
EDITAR: aceptó la respuesta a continuación porque es técnicamente correcta, pero si alguna vez alguien vuelve a este problema, parece que mangosta y / o el controlador mongodb en realidad no cierra la conexión cuando se le pregunta si todavía hay consultas en ejecución.
Ni siquiera recuerda la llamada de desconexión, no lo hace una vez que las consultas han terminado de ejecutarse; simplemente descarta su llamada sin excepción ni nada por el estilo, y nunca cierra la conexión.
Así que ahí lo tienes: asegúrate de que cada consulta se haya procesado antes de llamar a desconectar () si quieres que funcione realmente.
La otra respuesta no funcionó para mí. Tuve que usar mongoose.disconnect();
como se indica en esta respuesta .
Puede establecer la conexión a una variable y luego desconectarla cuando haya terminado:
var db = mongoose.connect(''mongodb://localhost:27017/somedb'');
// Do some stuff
db.disconnect();
Puedes cerrar la conexión con
mongoose.connection.close()
obtendrá un error si prueba cerrar / desconectar fuera del método. Una mejor solución es cerrar la conexión en ambos callback en el método then.The código ficticio está aquí.
var newTodo=new Todo({text:''cook dinner''});
newTodo.save().then((docs)=>{
console.log(''todo saved'',docs);
mongoose.connection.close();//mongoose.disconnect(); also work and prefered
},(e)=>{
console.log(''unable to save'');
});