UNPKG

1.24 kBJavaScriptView Raw
1
2module.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 // Setup helpers
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};