目前,我使用express开发了一个node.js REST webservice。我用MongoDB + Mongoose建立了一个数据库。 现在,我遇到了问题,我只能在建立连接的文件中使用db连接。我找到了一个解决方案,通过“module.exports”_db变量也可以在其他文件中使用连接。但我不知道,如果这是最好的做法。这是我的代码:
databaseManager.js
// Establish a connection to the database.
mongoose.Promise = global.Promise
mongoose.connect('mongodb://'+cfg.db.ip+':'+cfg.db.port+'/'+cfg.db.name)
var _db = mongoose.connection
_db.on('error', console.error.bind(console, 'DB connection error'))
_db.once('open', function()
{
console.log("DatabaseM: Connected to the database")
})
[...]
module.exports =
{
db : _db,
}
otherFile.js
var database = require('./databaseManagement')
[...]
database.db.collection('users').findOne({ name: "ashton"}, function(err, user)
{
if (err) return callback(consts.ERROR_DB, null)
if (!user) return callback(consts.WARN_DB_NO_CLIENT)
callback(null, user)
})
效果很好。但是我可能没有看到风险? 非常感谢: - )
答案 0 :(得分:0)
在你的app.js文件中:
var url="mongdb:\\localhost:27017\dbname";
mongoose.connect(url); //it open default connection for mongodb and is handled by mongoose
现在可以随意执行所有任务:
mongoose.connection.on('connected',function(){ console.log('Mongoose默认连接打开'+ dbURI); });
将所有数据库模型放在app.js文件中,如下所示:
var model1 = require('./models/model1');
<强> model1.js 强>
var mongoose = require('mongoose');
var data = new mongoose.Schema({
name:{type:String, required:true}
});
module.exports = mongoose.model('collectionName', data);
现在,当你的所有任务结束时。只需关闭默认连接,如下所示:
mongoose.connection.on('disconnected', function () {
console.log('Mongoose default connection disconnected');
});
如果连接句柄中出现任何错误,请执行以下操作:
mongoose.connection.on('error',function (err) {
console.log('Mongoose default connection error: ' + err);
});
如果节点服务退出,则关闭连接使用此代码
process.on('SIGINT', function() {
mongoose.connection.close(function () {
console.log('Mongoose default connection disconnected through app termination');
process.exit(0);
});
});