paw*_*wel 7 mongodb node.js express
即时通讯使用expressJS和mongoDB,我试着坚持我的mongodb连接在一个地方打开到整个应用程序.
我该怎么办?
我不希望每次在我的每个路径/模型文件中打开它,看起来像:
moods.js(示例文件,我有很多,每个集合一个)
exports.findAll = function(req, res) {
db.collection('moods', function(err, collection) {
collection.find().toArray(function(err, items) {
res.send(items);
});
});
};
.... some other methods
Run Code Online (Sandbox Code Playgroud)
和主app.js文件:
var express = require('express');
var routes = require('./routes');
var mood = require('./routes/moods');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'hjs');
app.use(express.favicon());
...
app.get('/moods', mood.findAll);
....
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)
现在,我应该把这段代码存在一次并为我的每个集合文件工作?我的意思是打开一个连接,而不是每次我想查询我的数据库时都打开新的连接.
var mongodb = require('mongodb');
var db = new mongodb.Db('xxxx',
new mongodb.Server('xxxx', 10059, {})
);
db.open(function (err, db_p) {
if (err) { throw err; }
db.authenticate('xxxx', 'xxxx', function (err, replies) {
// You are now connected and authenticated.
});
});
Run Code Online (Sandbox Code Playgroud)
Wir*_*rie 15
你有几个合理的选择.这真的是个人喜好的问题.
创建另一个打开连接的模块,让所有其他模块使用该模块:
mongo_connection.js
Run Code Online (Sandbox Code Playgroud)
在该文件中,您将放置连接和身份验证代码.导出db实例例如:
exports.db = db;
Run Code Online (Sandbox Code Playgroud)
在其他文件中,您可以require:
var connection = require('./mongo_connection.js');
var db = connection.db;
Run Code Online (Sandbox Code Playgroud)
或者,我经常创建连接一次(在模块中),然后将其传递给路由中的初始化函数:
var users = require('./routes/users.js');
users.initialize(db);
Run Code Online (Sandbox Code Playgroud)
我经常这样做,因为我想为路线提供其他常见的配置工作和设置:
var initialize = function(app, config) {
};
Run Code Online (Sandbox Code Playgroud)
如果你传递快递app实例,你也可以set:
app.set('mongo', db);
Run Code Online (Sandbox Code Playgroud)
然后用app.get('mongo')它来获取它.
| 归档时间: |
|
| 查看次数: |
3902 次 |
| 最近记录: |