我正在第一次进入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