查询来自另一个Node.js模块的数据库连接

时间:2015-03-10 20:30:58

标签: node.js

愚蠢的问题......我正在使用Node.js中的API工作(即学习),并使用下面的代码连接到MongoDB。当数据库代码位于我的routes.js文件中时,一切都很好,但我真的想将该代码块移到单独的dbconfig.js文件/模块中。

我已经尝试了我能找到的每个方法,但是在我的getQuery函数中调用时,db变量/对象总是返回undefined。任何指导都将非常感谢!!!

dbconfig.js

module.exports=function() {

    var db;

    var mongoClient = require('mongodb').MongoClient;
    var mongoUrl = 'mongodb://username:password@ds123456.mongolab.com:123456/mydb';
    var mongoOptions = {
        server: {auto_reconnect: true}
    };

    getDb();

    return {
        db: this.db
    };

    function getDb() {
    mongoClient.connect(mongoUrl, mongoOptions, function(error, database) {
            if (error) {
                console.log(error)
            } else {
                db = database;
            }
        });
    }
};

routes.js (相关部分)

(function(routes) {
    var dbconfig = require('.\dbconfig')();
    var breezeMongo = require('breeze-mongodb');

    var db = dbconfig.db;

    function getQuery(request, result, next) {
        try { 
            var resource = request.params.resource;
            var collectionName = getCollectionName(resource);
            var query = new breezeMongo.MongoQuery(request.query);
            query.execute(db, collectionName, processResults(result, next));
        } catch (ex) {
            var err = {
                statusCode: 404,
                message: 'Unable to execute query " ' + request.url + '"',
                error: ex
            };
        }

    }

})(module.exports);

0 个答案:

没有答案