Eu não recomendaria manter uma conexão se você quiser qualquer tipo de escalabilidade.
Existem várias opções para pool de conexões, etc, mas a maioria das pessoas que passam algum tempo com Node e MongoDB acaba se mudando para o Mongoose em algum momento.
Além de adicionar uma boa camada de esquema, ele oferece abstração de conexão para que você possa usar como padrão uma conexão compartilhada chamando
mongoose.connect()
, ou você pode criar várias conexões ou participar do pool de conexões chamando mongoose.createConnection()
. Em ambos os casos, você o chama sem um retorno de chamada, e o maquinário mangusto adiará as chamadas subsequentes para o módulo até que a conexão seja estabelecida, para que seu código não precise se preocupar. Algo como o seu caso de uso pode ser assim:
// in your app.js or server.js file
var mongoose = require('mongoose');
mongoose.connect(config.db.url); // assuming you have some module that handles config variables
Em seguida, em ./models/user.js
const mongoose = require('mongoose'),
Schema = mongoose.Schema;
const UserSchema = new Schema({
name: String,
age: Number,
roles: [String]
});
mongoose.model('User',UserSchema);
finalmente, digamos, uma função seed para criar seu lote inicial de usuários:
const mongoose = require('mongoose'),
User = mongoose.model('User');
// create some users
var user1 = new User({name: 'modulus admin', age: 42, roles: ['admin', 'moderator', 'user']});
var user2 = new User({name: 'modulus user', age: 22, roles: ['user']});
user1.save(console.log);
user2.save(console.log);