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