Oi
4.12.0
Eu adicionei alguns testes Mocha/Chai ao meu aplicativo de trabalho (Express+mangoose) e notei algo que não estava visível executando o aplicativo.
Emitir
Ao executar meus testes de unidade, o processo nunca sai e fica ocioso devido ao mangoose (aparentemente).
Nada incrível no trecho de código abaixo... Eu tentei alguns mangustos#disconnect no final do meu teste, mas não muda nada..
Você poderia, por favor, aconselhar sobre o que está bloqueando a saída do processo?
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;
}
toda vez que eu usei o mongoose.connect
, eu sempre recebo esses avisos
Aviso de descontinuação:
open()
está obsoleto no mangusto >= 4.11.0, useopenUri()
ou defina a opçãouseMongoClient
se estiver usandoconnect()
oucreateConnection()
. Consulte http://mongoosejs.com/docs/connections.html#use -mongo-client
im no nó: 8.7 , mangusto: 4.12.2
tente isso,
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();
}());
Bem, meu mal, isso não foi culpa do mangoose.
Estou usando mocha e tive que adicionar o parâmetro --exit
para forçar a chamada para process.exit.
Eu acho que sem esse parâmetro mocha apenas... não faz nada no final do teste e espera.
Forçar a saída do processo é apenas uma solução alternativa. O problema é que parece que se você tiver várias conexões abertas e usar mongoose.disconnect()
, ainda deixará um soquete aberto.
Comentários muito úteis
Forçar a saída do processo é apenas uma solução alternativa. O problema é que parece que se você tiver várias conexões abertas e usar
mongoose.disconnect()
, ainda deixará um soquete aberto.