Hola
4.12.0
Agregué algunas pruebas de Mocha/Chai a mi aplicación de trabajo (Express+mangoose) y noté algo que no estaba visible al ejecutar la aplicación.
Asunto
Cuando ejecuto mis pruebas unitarias, el proceso nunca sale y está inactivo debido a mangoose (aparentemente).
No hay nada sorprendente en el fragmento de código a continuación... Intenté algo de mongoose#disconnect al final de mi prueba, pero no cambia nada...
¿Podría aconsejarme sobre qué está bloqueando la salida del proceso?
const mongoose = require('mongoose');
import { databaseConfig } from './config/database';
export function setupDatabase() {
mongoose.Promise = require('bluebird');
//mongoose.set("debug", true)
var connection = mongoose.connect(databaseConfig.database, { useMongoClient: true }, (err) => { console.log("Connect error: " + err) });
mongoose.connection.on('connected', () => {
console.log('Connected to database ' + databaseConfig.database);
});
mongoose.connection.on('error', (err) => {
console.log('Database error: ' + err);
});
return mongoose;
}
cada vez que uso el mongoose.connect
, siempre recibo estas advertencias
Advertencia de desuso:
open()
está en desuso en mongoose >= 4.11.0, useopenUri()
en su lugar, o configure la opciónuseMongoClient
si usaconnect()
ocreateConnection()
. Consulte http://mongoosejs.com/docs/connections.html#use-mongo-client
estoy en el nodo: 8.7 , mangosta: 4.12.2
prueba esto,
const mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
import { databaseConfig } from './config/database';
async function setupDatabase() {
// mongoose.set('debug', true);
return await mongoose.connection.openUri(databaseConfig.database);
}
(async function () {
const conn = await setupDatabase();
// closing instance
await conn.close();
}());
Bueno, mi culpa no fue culpa del mangosta.
Estoy usando mocha y tuve que agregar el parámetro --exit
para forzar la llamada a procesar.salir.
Supongo que sin este parámetro mocha simplemente... no hace nada al final de la prueba y espera.
Forzar la salida del proceso es solo una solución. El problema es que parece que si tiene varias conexiones abiertas y usa mongoose.disconnect()
, todavía deja un socket abierto.
Comentario más útil
Forzar la salida del proceso es solo una solución. El problema es que parece que si tiene varias conexiones abiertas y usa
mongoose.disconnect()
, todavía deja un socket abierto.