在nodejs中初始化新数据库连接的位置?

时间:2016-12-25 20:51:48

标签: node.js database express

您是否应该在路由处理程序范围之外创建数据库连接的实例,或者为每个处理程序创建一个实例(例如,app.get('/todos'))?

如果我错了,请纠正我,但我猜第一种方法更好,因为它可以重复使用相同的连接。但是,我已经看到了为每个路由处理程序创建一个的其他示例。

推荐的方法是什么?或者由于数据库如何在其端缓存连接而重要?

编辑:我可能对数据库驱动程序如何连接感到困惑。大多数提供了诸如connectDB(config)之类的方法,您可以在其中指定资源的位置,身份验证等。这实际上是在建立连接,还是在您实际请求具有该数据库对象的内容时启动连接?

1 个答案:

答案 0 :(得分:1)

您应该建立一次连接并在所有处理程序中使用它。

如果您在每次请求时重新连接到数据库,那么您将使用大量资源并增加延迟,更不用说使用无用的重新连接来锤击数据库。

数据库连接意味着持久性 - 而非一次性事物。

您没有说出您使用的是哪个数据库,而是以Mongo为例 - 当您使用本机连接到数据库时 MongoDB Node.js Driver您可以使用一些选项,例如:

  • poolSize - 为每个服务器或代理连接设置最大poolSize(默认为5
  • autoReconnect - 重新连接错误(默认为true

其他一些有趣的选项包括:reconnectTriesreconnectIntervalkeepAliveconnectTimeoutMSsocketTimeoutMS

如果您对默认设置不满意,可以更改这些选项的值,但这些选项可用于管理长期连接,而不是在每次请求时重新连接和断开连接。

有关详细信息,请参阅:

有关详细信息,请参阅此答案: