2016-12-25 62 views
2

如果您在路由處理程序範圍外創建數據庫連接的實例,或者爲每個處理程序創建一個數據庫連接(例如,app.get('/todos'))?在nodejs中初始化新數據庫連接的位置?

糾正我,如果我錯了,但我猜想第一種方法更好,因爲它可以重用相同的連接。但是,我已經看到了其他例子,爲每個路由處理器創建一個例子。

什麼是推薦的方法?或者由於數據庫如何緩存連接到最後?

編輯:我可能會對數據庫驅動程序如何連接感到困惑。大多數提供了一種方法,如connectDB(config),您可以在其中指定資源的位置,身份驗證等。實際上是在建立連接還是在實際請求某個數據庫對象時啓動連接?

+0

最好的做法是創建一個路由處理程序的範圍之外的數據庫連接,如果你正在爲每一個路線數據庫連接,那麼你增加你在 - 內存消耗和規模可能會降低系統性能。 –

回答

1

您應該建立連接一次並在所有處理程序中使用它。

如果您在每個請求中重新連接到數據庫,那麼您將使用大量資源並增加延遲,更不用說用無用的重新連接來敲擊數據庫。

數據庫連接意味着持久 - 而不是一次性事物。

你沒有說你使用的數據庫,但蒙戈的例子 - 當您連接到數據庫與本地 MongoDB Node.js Driver有一些選項,您可以使用,如:

  • poolSize - 設置最大池爲每個單獨的服務器或代理的連接(缺省爲5
  • autoReconnect - 重新連接錯誤(默認爲true

一些其他有趣的選項是:reconnectTries,reconnectInterval,keepAlive,connectTimeoutMS,socketTimeoutMS

如果您對默認值不滿意,您可以更改這些選項的值,但這些選項用於管理長連接的連接,而不是在每個請求上重新連接和斷開連接。

欲瞭解更多信息,請參閱:

還看到這個答案的詳細信息: