2013-03-18 4 views
1

내 애플리케이션에서 mongoDB.Below와 node.js를 사용하여 샘플 코드를 작성했습니다.mongoDB 인스턴스를 node.js의 다른 모든 모듈에서 사용 가능하게 만드는 방법

var mongodb = require('mongodb'); 
var server = new mongodb.Server("localhost", 27017, {}); 

new mongodb.Db('test', server, {w: 1}).open(function (error, client) { 
    if (error) throw error; 
    var collection = new mongodb.Collection(client, 'test_collection'); 
    collection.insert({hello: 'world'}, {safe:true}, 
    function(err, objects) { 
     if(!err){ 
      console.log('Data inserted successfully.'); 
     } 
     if (err && err.message.indexOf('E11000 ') !== -1) { 
      // this _id was already inserted in the database 
     } 
    }); 
}); 

이제 내 응용 프로그램의 다른 모듈에 mongoDB 인스턴스가 필요합니다. 어떻게하면됩니까?

+1

코드를 포맷하십시오. 이번에는 당신을 위해 해 봤지만 형식이 맞으면 읽는 것이 훨씬 쉽습니다. – tjameson

+0

@tjameson ok thanks.Hereafter 나는 내 자신에 대해 할 것입니다 – sachin

답변

0

간단한 방법은 우리는 당신이 게시 코드는 app.js에 가정하면, 당신은에 2 행을 다시 작성할 수 있습니다 :

var server = exports.db = new mongodb.Server("localhost", 27017, {}); 

그리고 인스턴스에 대한 액세스를 필요로하는 모듈에 간단하게 쓰기 :

require('app').db 

더 일반적인 방법은 아마도 공유 물건을 settings.js 파일에 넣거나 전용 데이터베이스 인터페이스 모듈을 사용하는 것입니다.

업데이트

같은 방법으로 클라이언트를 노출하려는 오픈 클라이언트에 대한 액세스 권한을 얻으려면 :

new mongodb.Db('test', server, {w: 1}).open(function (error, client) { 
    exports.client = client; 
    // ... 
}); 
+0

mongoDB open function.I에서 언급 한 클라이언트 객체가 필요합니다. 모든 모듈에서 열린 연결을 반복하고 싶지 않습니다. – sachin

+0

예를 들어 업데이트되었습니다. 그러나 당신이 더 추상적 인 것을 원한다면 당신은 몽구스 같은 것을 들여다 볼 것을 제안 할 것입니다. –

+0

고맙습니다 ................ – sachin

관련 문제