亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Node.js Web應用程序中管理MongoDB連接?

如何在Node.js Web應用程序中管理MongoDB連接?

慕哥6287543 2019-06-23 16:36:26
如何在Node.js Web應用程序中管理MongoDB連接?我用的是節點-MongoDB-本機使用MongoDB編寫一個網站的驅動程序。我有一些關于如何管理連接的問題:僅對所有請求只使用一個MongoDB連接就足夠了嗎?有什么性能問題嗎?如果沒有,我是否可以設置一個全局連接以便在整個應用程序中使用?如果沒有,那么在請求到達時打開一個新連接,在處理請求時關閉它好嗎?打開和關閉連接費用昂貴嗎?我應該使用全局連接池嗎?我聽說驅動程序有一個本地連接池。這是個不錯的選擇嗎?如果我使用一個連接池,應該使用多少個連接?還有什么我應該注意的嗎?
查看完整描述

3 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

當應用程序啟動并重用db對象時,打開do MongoClient.Connection一次。它不是一個單例連接池,每個.CONNECT創建一個新的連接池。

因此,要直接回答您的問題,請重用來自MongoClient.Connection()的db對象。這提供了池,并且與每個db操作上的打開/關閉連接相比,它將提供明顯的速度增長。


查看完整回答
反對 回復 2019-06-23
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

下面是一些管理MongoDB連接的代碼。

var?MongoClient?=?require('mongodb').MongoClient;var?url?=?require("../config.json")["MongoDBURL"]var?option?=?{
??db:{
????numberOfRetries?:?5
??},
??server:?{
????auto_reconnect:?true,
????poolSize?:?40,
????socketOptions:?{
????????connectTimeoutMS:?500
????}
??},
??replSet:?{},
??mongos:?{}};function?MongoPool(){}var?p_db;function?initPool(cb){
??MongoClient.connect(url,?option,?function(err,?db)?{
????if?(err)?throw?err;

????p_db?=?db;
????if(cb?&&?typeof(cb)?==?'function')
????????cb(p_db);
??});
??return?MongoPool;}MongoPool.initPool?=?initPool;function?getInstance(cb){
??if(!p_db){
????initPool(cb)
??}
??else{
????if(cb?&&?typeof(cb)?==?'function')
??????cb(p_db);
??}}MongoPool.getInstance?=?getInstance;module.exports?=?MongoPool;

啟動服務器時,調用initPool

require("mongo-pool").initPool();

然后,在任何其他模塊中,您可以執行以下操作:

var?MongoPool?=?require("mongo-pool");MongoPool.getInstance(function?(db){
????//?Query?your?MongoDB?database.});


查看完整回答
反對 回復 2019-06-23
  • 3 回答
  • 0 關注
  • 847 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號