寻找在多个javascript文件中使用一个mongodb连接的最佳实践
Searching for best practice to use one mongodb connection in multiple javascript-files
目前,我用express开发了一个node.js REST web服务。我使用MongoDB + Mongoose建立数据库。现在,我有一个问题,我只能在我建立连接的文件中使用db连接。我找到了一个解决方案,通过"模块"在其他文件中使用连接。导出_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)
})
效果很好。但可能存在我看不出来的风险?非常感谢:-)
在你的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('猫鼬默认连接打开' + 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);
});
});
相关文章:
- 使用mongodb更新中的一个变量
- 为什么我从一个空的mongodb数据库中获取数据
- 为什么我会得到一个“;auth失败”;使用正确的凭据连接到MongoDB时出错
- MongoDB聚合将两个不同的字段合并为一个并获取计数
- 两个服务器可以访问一个公共的mongoDB数据库吗?
- 如何在MongoDB对象的每个嵌套数组中添加一个额外的元素
- 将文档的MongoDB字段合并到一个文档中
- 在document-mongoDB中设置一个字段
- 如何计算mongodb中两个集合中一个字段的不同值的数量
- 将一个小型javascript表达式转换为mongodb查询
- MongoDB map/reduce,forEach不是一个函数
- setTimeout与mongodb各一个
- 对于用NodeJS编写的递归MongoDB归档程序来说,这是一个好的架构吗
- MongoDB:如何调用另一个JS文件中定义的函数
- 如何从MongoDB中选择所有文档,其中一个字段不等于某个值
- Meteor - 将 mongodb 查询分配给变量并将其插入到另一个集合
- MongoDB - 查找元素,其中字段等于数组中的至少一个值
- MongoDB:按日历周和年聚合文档,并计算一个字段的所有值的总量
- 基于 MongoDB 中另一个集合中的数据查询一个集合中的数据
- MongoDB从一组未知子文档中的每一个$slice