我使用mongoose和其他一些在nodejs环境中有用的东西创建了一个应用程序环境。 我在那里定义了一个构造函数,它为每个组件设置了persistene。 然后我thougt(并且已经写了一些工作的东西)保持连接持久以防止重新连接很多次是一个好主意。 这很好(目前),但有两件事我无法找到... ...
1)我可以处理连接丢失等错误(例如DB服务器关闭)
db.on('error', function(error) {
console.log('MONGO: ERROR');
// evt is not fired when DB server goes down
});
db.once('disconnect', function callback() {
console.log('MONGO: DISCONNECTED');
// evt is also not fired when DB server goes down
});
2)使用在应用程序启动时完成的持久连接是一个好主意 而不是任何用户请求?
我的所有组件都从我的持久层扩展,它建立连接并启动modelName,schemaDefinition等。
Persistence = function(modelName, schemaDefinition, config) {
this.config = config;
if ( typeof (modelName) === 'string' && schemaDefinition instanceof Object) {
this.mongoose = require('mongoose');
if (this.mongoose.connection.readyState == this.config.settings.DATABASE.disconnected) {
var con = this.mongoose.connect('mongodb://' + this.config.settings.DATABASE.host + '/' + this.config.settings.DATABASE.collection);
}
this.modelName = modelName;
this.schemaDefinition = schemaDefinition;
var db = this.mongoose.connection;
db.on('error', function(error) {
console.log('MONGO: FERROR');
});
db.once('open', function callback() {
console.log('MONGO: CONNECTED');
});
db.once('disconnect', function callback() {
console.log('MONGO: CONNECTION lost');
});
}
};