Se você já se conectou ao banco de dados, o
once
evento não será acionado novamente. O banco de dados já estava conectado para todo o processo NodeJs quando estava conectado globalmente (fora da função). A chamada para
mongoose.connect('mongodb://localhost/test');
faz a conexão e a abre. Então, em vez de abri-lo em cada chamada de função (o que seria uma maneira ineficiente de interagir com o MongoDB)
connect
imediatamente quando o aplicativo NodeJs for iniciado, e considere que haverá um período em que a conexão pode não estar disponível (por ser assíncrona) ou não iniciar o aplicativo (listen
) até que a conexão seja concluída (ou com um tempo limite). Com o Mongoose, até que a conexão seja feita, todos os comandos são armazenados em buffer (mas esse pode não ser o comportamento que você deseja). Você pode usar o open
evento se você quiser saber quando a conexão for concluída. A conexão é encontrada aqui:
mongoose.connection
se você usar o connect
função para criar a conexão. Depois que a conexão for aberta, você poderá usá-la em seu
popSingleData
função sem usar o once
evento e retorno de chamada. Há um pool de conexões mantido automaticamente. Para saber mais sobre conexões, leia aqui .