Estou usando o mangusto em um script que não deve ser executado continuamente e estou enfrentando o que parece ser um problema muito simples, mas não consigo encontrar uma resposta; basta colocar uma vez que eu chamo uma função de mangusto que envia solicitações ao mongodb, minha instância do nodejs nunca para e eu tenho que matá-la manualmente com, por exemplo, Ctrl + c ou Program.exit ().
O código é mais ou menos assim:
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);
Tentei adicionar chamadas ao mongoose.disconnect (), mas não como resultado. Além disso, tudo funciona bem (encontrar, salvar, ...).
Esse é exatamente o mesmo problema que essa pessoa; infelizmente, ele não recebeu nenhuma resposta: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
obrigado
EDIT: aceitou a resposta abaixo, pois é tecnicamente correta, mas se alguém encontrar esse problema novamente, parece que o mongoose e / ou o driver mongodb não fecham a conexão quando você solicita se ainda houver consultas em execução.
Ele nem se lembra da chamada de desconexão, e não faz isso depois que as consultas são concluídas; apenas descarta sua ligação sem nenhuma exceção ou algo do tipo e nunca fecha a conexão.
Então está aí: certifique-se de que todas as consultas tenham sido processadas antes de chamar o métodoconnect () se você quiser que realmente funcione.
Respostas:
Você pode fechar a conexão com
fonte
Connection.close()
método será exportado apenas, disponível apenas, então use-o.A outra resposta não funcionou para mim. Eu tive que usar
mongoose.disconnect();
como indicado nesta resposta .fonte
Você pode definir a conexão como uma variável e desconectá-la quando terminar:
fonte
Estou usando a versão 4.4.2 e nenhuma das outras respostas funcionou para mim. Mas adicionar
useMongoClient
as opções e colocá-lo em uma variável que você chamaclose
parecia funcionar.fonte
Você receberá um erro se tentar fechar / desconectar fora do método. A melhor solução é fechar a conexão nos dois retornos de chamada no método O código fictício está aqui.
fonte
Assim como Jake Wilson disse: Você pode definir a conexão como uma variável e desconectá-la quando terminar:
ou se dentro da função assíncrona:
caso contrário, quando eu estava verificando-o no meu ambiente, ocorreu um erro.
fonte
Provavelmente você tem isso:
mas você também pode ter algo parecido com isto:
você não pode ligar,
db.disconnect()
mas pode fechar a conexão depois de usá-la.fonte