【问题标题】:Mongodb connection with nodejsmongodb与nodejs的连接
【发布时间】:2016-12-05 07:05:40
【问题描述】:

我是node js开发的新手,最近尝试了一个基本的程序来连接node js和mongodb。我已经使用“mongoose”从节点连接 mongodb。

在进入数据库连接之前,我有以下问题。启动节点应用时出现两种错误情况

案例 1 - mongodb 可能无法启动,在这种情况下,节点服务器将无法启动。示例错误消息就像

猫鼬/node_modules/mongodb/lib/server.js:242 process.nextTick(function() { throw err; }) ^ 错误:连接 ECONNREFUSED 在 errnoException (net.js:905:11) 在 Object.afterConnect [as oncomplete] (net.js:896:19) [nodemon] 应用程序崩溃 - 启动前等待文件更改...



案例 2 - mongodb 可能会在启动节点应用程序时启动,但它可能会因某些不可避免的情况而断开/停止。在这种情况下,如果我们进行任何数据库查询,节点服务器就会被杀死。示例错误消息就像

DisconnectedError:尝试重新连接到“localhost:27017”的重试次数用完。尝试将 `server.reconnectTries` 和 `server.reconnectInterval` 设置为更高的值。 在 MongooseError.DisconnectedError

请告诉我如何处理这两种错误情况。 (一些示例代码/链接会更有帮助)

PS : 我试图为此搜索解决方案,但无法获得正确的解决方案(或者)我可能会使用不正确的关键字进行搜索!

【问题讨论】:

  • 我相信您要查找的正确词不是用例,而是错误用例。用例是有益于您尝试构建的应用程序/系统/事物的事物。例如。 mongo db 用于您的节点应用程序的用例是以指定格式存储大量数据,这比文件系统更具可扩展性和更易于使用。
  • 感谢纠正@Rdesmond 是的,我的意思是错误情况!也会编辑帖子,我不擅长造词,请忍耐:)
  • 另外,我不打算回答,因为这些问题很难回答并且取决于您的应用程序需求(例如 CAP 中的并发性与可用性),而且我没有丰富的架构/管理大型系统。也就是说,我想说几种可能的解决方案是冗余/故障转移系统。
  • 案例 1,您可以使用负载均衡器并运行多个节点服务器。情况 2,一个失败的数据库查询不应该让 web 服务器失败。事实上,像 Cassandra 这样的一些数据库具有容错性,因此如果单个实例(实例是机器上的“mongodb”进程)出现故障(数据库在多台机器上运行),仍然可以进行查询,因为其他实例有存储在故障机器上的数据。
  • 我认为你误解了我的问题。负载均衡器和多个节点无法解决,因为我的问题是 db 本身在启动服务器时没有启动。比如说,在某个时间节点服务器和 mongo db 都被杀死了。在那段时间里,我们试图单独启动节点服务器。在这种情况下,节点服务器将无法启动,它将进入循环直到 mongo db 启动。我们如何避免/捕获这种情况而不是进入循环是我的问题!希望我解释清楚!

标签: node.js mongodb mongoose database-connection database


【解决方案1】:

我在 nodejs 中使用 mongoose 重新启动 mongodb 时遇到此连接错误。

connection error: { 

    [DisconnectedError: 
        Ran out of retries trying to reconnect to "127.0.0.1:27017". 
        Try setting `server.reconnectTries` and `server.reconnectInterval` 
        to something higher. ]

    message: 'Ran out of retries trying to reconnect to "127.0.0.1:27017". 
              Try setting `server.reconnectTries` and `server.reconnectInterval` 
              to something higher.',

    name: 'DisconnectedError' 

}


发件人: http://mongoosejs.com/docs/connections.html

注意:如果 auto_reconnect 开启,mongoose 会在失败一定次数后放弃尝试重新连接。设置server.reconnectTries 和server.reconnectInterval 选项以增加猫鼬尝试重新连接的次数。

// Good way to make sure mongoose never stops trying to reconnect

mongoose.connect(uri, { server: { reconnectTries: Number.MAX_VALUE } });

【讨论】:

  • 感谢@Eddy 会检查
猜你喜欢
  • 2015-05-31
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多