MongoDBの接続プールを表現

そこにウェブのMongoDB nodejs接続プールのチュートリアルがありますが、我々はこの方法で、シェアを考え出すので、時代遅れのAPIを使用するもののので、

 

ニードベースの特急知識http://www.expressjs.com.cn/

 

公式のMongoDBドライブと、一般的なプールを使用します

NPM インストール --save MongoDBの一般的なプールを

 

もちろん、私はまた、公式にも公式文書を見ることができます鉄の頭の比較はまた、(面白い)に直接行くことができれば記事を読んだ後、ここでは、リンクされ、ファイルを書き込むように頼ま書きました

https://www.npmjs.com/package/generic-pool

https://docs.mongodb.com/ecosystem/drivers/node/

すべての後、私はブログは中国のものです書いています。

 

コネクションプーリングのコードを作成します。

必要MongodbClient =一定( 'MongoDBは' ).MongoClient; 
constのGenericPool =( 'プール-ジェネリック'が必要です); 


工場CONST = { 

    作成:関数は(){//リンク作成
    リターン MongodbClient.connectを( "MongoDBは://" + "localhostの" + ":" + "27017" 、{useUnifiedTopology:真に;})
    //のMongoDBのクライアントリンクオブジェクトを返す }、 破棄:
機能(クライアント){//リンク破壊 client.closeを(); //閉じますここで注意すべきリンクは、クライアントのパラメータは、我々が作成したオブジェクトの上にある } } // constのoptsの= { 最大: 10 、リンクの最大数// 分:2 //最小。 } のConstの、MyPool = GenericPool.createPool(工場出荷時の、OPTS); //接続プーリングを作成し、ここで module.exportsは =の、MyPool; //エクスポート他のモジュールへ

 方法とオプションを作成および破棄するために、それぞれ、ファクトリオブジェクトとOPTオブジェクトを作成します。

 

私は、ルーティングユーザの作成、ルートExpressを用いる使用に、当然のことながら、これは議論しないように、明示的知識です。

必要=一定(発現' エクスプレス' ;)
CONSTルータ = express.Router()と、
CONSTの、MyPool =(必要' ./db_poolを' ); //これはdb_pool上記のコードファイルである

Router.get(' /ユーザー'、 (REQ、RES、次)=> { 
    VAR名= req.query.name || '' ; // GETクエリパラメータ

    VAR queryObject = {}
     IF(!名= '' ){ 
        queryObject.name = 名; 
    } 

    resoursePro VAR =myPool.acquire(); //接続プールの要求、それはへのリンクがあれば理解していない約束オブジェクトを返します。https://developer.mozilla.org/zh-CN/docs/Web / JavaScriptを/リファレンス/ Global_Objects /約束 
    resoursePro。その後、((クライアント)=> {//クライアント我々はここで作成した上でオブジェクトの戻り値は工場である
        LETは、カーソル = client.db(DBNAME ).collection(" ユーザー'。)検索(queryObject); //は...書き込みに、メインスピーカ接続プールとして、あまりにも怠惰な、それは従来のものであり、以下の操作を使用し
        somethignてみましょう = ()cursor.toArrayを; 
        。somethign その後、((結果を)=> {
             // にconsole.log(結果); 
            res.json(結果); //クエリ応答結果
            。myPool.release(クライアント)、次いで(()=> {//このリンクを使用ああ上に戻される
                にconsole.log(' リリース' 
            }); 
        })キャッチ((ERR) => { 
            myPool.release (クライアント).catch((ERR) => { 
                にconsole.log(ERR)
            })
        })
    })
})

 

おすすめ

転載: www.cnblogs.com/incredible-x/p/11924768.html