1 |
|
2 | module.exports = function(cb){
|
3 |
|
4 | var createURL = function(conf){
|
5 | var cr = "";
|
6 | if(conf.username && conf.password) cr = conf.username+":"+conf.password+"@";
|
7 | return "mongodb://"+cr+(conf.host||"localhost")+":"+(conf.port||"27017")+"/"+(conf.database||conf.db);
|
8 | };
|
9 |
|
10 | var _ = require("underscore");
|
11 | var env = this;
|
12 | var config = this.config;
|
13 |
|
14 | if(!config.mongodb) return cb();
|
15 |
|
16 | var mongodb = env.engines.MongoDB = require("mongodb");
|
17 | var MongoClient = mongodb.MongoClient;
|
18 |
|
19 | MongoClient.connect(createURL(config.mongodb), config.mongodb.options || {}, function(err, db){
|
20 | if(err) return cb(err);
|
21 | env.engines.mongodb = db;
|
22 |
|
23 | env.helpers.isObjectId = function(val){ return val instanceof mongodb.ObjectId; };
|
24 | env.helpers.isDBRef = function(val){ return val instanceof DBRef; };
|
25 | env.helpers.objectify = function(val){
|
26 | return _.isArray(val)? val.map(mongodb.ObjectID) : mongodb.ObjectID(val);
|
27 | };
|
28 |
|
29 | env.stops.push(function(cb){ db.close(); cb(); });
|
30 |
|
31 | env.i.do("log.sys", "mongodb", "Connected to MongoDB on "+(config.mongodb.host || "localhost")+":"+(config.mongodb.port||27017)+"/"+config.mongodb.db );
|
32 | cb();
|
33 | });
|
34 |
|
35 | };
|