我正在第一次進入MEAN棧,我正在通過Mongoose處理數據庫。我對Mongoose或MongoDB不是很熟悉,所以我不知道他們是如何配置的。我也不知道Mongoose是否很重要,或者這純粹是一個MongoDB問題。MongoDB/Mongoose中連接的建議使用壽命是多少?
上次我直接編寫數據訪問邏輯(沒有ORM或注入庫來處理連接管理),它在.NET中使用System.Data.SqlClient
。我記得一定要確保SqlConnection
已經不再需要打開了,並且在我完成時總是明確地關閉它。
我讀過很多關於編寫平均應用程序的方法,沒有人提到這一點。從我見過的代碼中,我得到了MongoDB/Mongoose連接喜歡在應用程序級別生活的印象,並且我應該只在整個應用程序中調用mongoose.connect
一次。
這裏是我的連接代碼,它被調用一次在應用程序啓動:
mongoose = require "mongoose"
connection = mongoose.connection
mongoose.connect process.env.MONGO_URI
connection.on 'error', (err) ->
console.error 'DB connection error', err
.once 'open', ->
console.log 'DB open'
gracefulExit = ->
connection.close ->
console.log 'Mongoose default connection disconnected through app termination'
process.exit 0
process.on('SIGINT', gracefulExit)
.on('SIGTERM', gracefulExit)
module.exports = (name, dataStructure) ->
schema = new Schema dataStructure
return mongoose.model(name, schema)
JavaScript translation if you need it
這是唯一的地方mongoose.connect
被調用,並將得到的連接對象是整個應用程序重複使用。我是否有權這樣做,還是應該在每個請求中創建,打開,關閉和銷燬它?我還需要注意哪些其他可擴展性問題?
我意識到這聽起來有些開放式,但我希望獲得關於MongoDB和Mongoose內部和配置的客觀信息。在有大量併發請求的生產環境中執行此操作時是否會出現問題?
謝謝!這是否意味着只能有5個同時連接?這對我的測試應用程序來說是足夠的,但對於商業網站而言似乎很低。 – 2015-04-08 14:36:34
@JustinMorgan您可以將'poolSize'值設置爲您需要的任意數量的連接; 5只是默認值。 – JohnnyHK 2015-04-10 01:43:33