2016-06-01 13 views
0

私はモジュールを作成するのが初めてで、メインアプリケーションからmongodb接続プールにアクセスするのに少し問題があります。私はmongo-pool.jsを必要とし、それが正常に接続モンゴすると言うmongoPool.start()を呼び出すと、DBオブジェクトがクエリを作るためにアクセスすることはできませんが、MongoDB | Node.js module.exportsを使った接続プーリング

// mongo-pool.js 
// ------------- 

var assert = require('assert'); 
var mongodb = require('mongodb'); 
var MongoClient = mongodb.MongoClient; 
var url = 'connection_url'; 

var mongoPool = { 
    start: function() { 
     MongoClient.connect(url, function(err, db) { 
      assert.equal(null, err); 
      console.log("Successfully connected to mongo"); 

      // Make the db object accessible here? 

     }); 
    } 

} 

module.exports = mongoPool; 

は、ここでのモジュールです。メインのjsファイルは次のとおりです。

var mongoPool = require('./mongo-pool.js'); 
var pool = mongoPool.start(); 


var collection = pool.db.collection('accounts'); 
collection.update(
    { _id: 'DiyNaiis' }, 
    { $push: { children: 'JULIAN' } } 
) 

変数プールは未定義です。私はなぜ、私はモジュールでreturn dbしようとしたが、動作していないようでした把握することができません。

ご協力いただきありがとうございます。

答えて

0

私の仲間が問題の原因を解明するのを助けました。ここには、誰もがそれに遭遇するソリューションがあります。

私は私のmongo-pool.jsモジュールを更新し、それ自体にDBプロパティを割り当てる:

var assert = require('assert'); 
var mongodb = require('mongodb'); 
var MongoClient = mongodb.MongoClient; 
var url = 'my_database_url'; 

var mongoPool = { 
start: function() { 
    MongoClient.connect(url, function(err, db) { 
     assert.equal(null, err); 

     var self = this; 
     self.db = db; 
     // THESE ASSIGNMENTS 

     console.log("Successfully connected to mongo"); 

     // Make the db object accessible here? 

    }); 
} 

} 

module.exports = mongoPool; 

その後、私のmain.jsファイルに:

var mongoPool = require('./mongo-pool.js'); 
// Include My mongo global module 

new mongoPool.start(); 
// Initialize the new MongoDB object globally 

setTimeout(function() { 
    console.log(db); 
}, 3000); 
// Set a 3 second timeout before testing the db object... 
// It will return undefined if it's called before the mongo connection is made 

dbオブジェクトがモジュールから世界的に入手可能です。

関連する問題