Odradzałbym utrzymywanie jednego połączenia, jeśli chcesz jakąkolwiek skalowalność.
Istnieje wiele opcji puli połączeń itp., ale większość osób, które spędzają jakikolwiek czas z Node i MongoDB, w pewnym momencie przechodzi do Mongoose.
Oprócz dodania ładnej warstwy schematu oferuje abstrakcję połączenia, dzięki czemu możesz domyślnie korzystać z połączenia współdzielonego, wywołując mongoose.connect()
lub możesz utworzyć wiele połączeń lub uczestniczyć w puli połączeń, wywołując mongoose.createConnection()
. W obu przypadkach wywołujesz go bez wywołania zwrotnego, a maszyna mangusty odkłada kolejne wywołania modułu do czasu nawiązania połączenia, aby Twój kod nie musiał się tym przejmować.
Coś takiego jak Twój przypadek użycia może wyglądać tak:
// 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
Następnie w ./models/user.js
const mongoose = require('mongoose'),
Schema = mongoose.Schema;
const UserSchema = new Schema({
name: String,
age: Number,
roles: [String]
});
mongoose.model('User',UserSchema);
na koniec, powiedzmy, funkcja seed, aby utworzyć początkową grupę użytkowników:
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);