当前位置: 首页 > 面试题库 >

完成后,正确关闭猫鼬的连接

蒋典
2023-03-14
问题内容

我在不是要连续运行的脚本中使用猫鼬,而且我面对的似乎是一个非常简单的问题,但我找不到答案。简单地说,只要我调用将请求发送到mongodb的任何mongoose函数,我的nodejs实例就不会停止,而我必须使用Ctrl
+ c或Program.exit()手动将其杀死。

该代码大致如下所示:

var mongoose = require('mongoose');

// if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ?
mongoose.connect('mongodb://localhost:27017/somedb');

// define some models

// if I include this line for example, node never stop afterwards
var MyModel =  mongoose.model('MyModel', MySchema);

我尝试将调用添加到mongoose.disconnect(),但没有结果。除此之外,一切都很好(查找,保存等)。

这和这个人是完全一样的问题,可惜他没有得到任何答案:https :
//groups.google.com/group/mongoose-
orm/browse_thread/thread/c72cc1c51c76e661

谢谢

编辑:接受下面的答案,因为它在技术上是正确的,但是如果有人再次遇到此问题,则当您询问是否还有查询正在运行时,mongoose和/或mongodb驱动程序似乎实际上并未关闭连接。

它甚至根本不记得断开连接的调用,一旦查询运行完成,它就不再执行。它只会丢弃您的呼叫,不会引发任何异常或任何类似情况,并且永远不会真正关闭连接。

这样就可以了:如果您希望每个查询真正起作用,请确保在调用断开连接()之前已处理了每个查询。


问题答案:

您可以通过以下方式关闭连接

mongoose.connection.close()


 类似资料:
  • 问题内容: 这是问题的简化版本,但是基本上,我试图用mongoose打开2个mongodb连接,并且给我“试图打开未关闭的连接”。错误。 代码示例: 任何想法如何使其工作? 问题答案: 打开与数据库的默认连接。由于需要两个不同的连接,请使用。 API链接:http : //mongoosejs.com/docs/api.html#index_Mongoose- createConnection

  • 问题内容: Node,Mongoose和Mongodb的新手-尚未阅读源代码… 我有一个Node应用程序,它将打开一个文件,将行解析为记录并将记录保存到mongodb。记录是Mongoose模型对象,要将它们保存到mongodb中,我要做的就是调用它们上的方法。 所以现在我都担心猫鼬正在管理的联系。我需要手动关闭它吗?如果是这样,我什么时候应该关闭它(由于所有事情都是异步发生的,所以很难说何时关闭

  • 问题内容: 我从Mongoose网站上阅读了快速入门,几乎复制了代码,但是无法使用Node.js连接MongoDB。 这是我的代码。控制台仅打印,不打印。我哪里错了? 问题答案: 调用时,它将建立与数据库的连接。 但是,您在以后的某个时间点(处理请求时)附加了事件侦听器,这意味着该连接可能已经处于活动状态,并且该事件已经被调用(您尚未监听它)。 。 您应该重新排列代码,以使事件处理程序尽可能(及时

  • 在一个实用程序库中,我正在创建一个执行器服务 然后,主线程将向该服务发布一些任务。当主线程完成时,我想关闭Executor服务,以允许应用程序退出。 问题是我只能更改实用程序库中的代码。我考虑的一个选项是使用守护线程。但在发布到该服务的任务完成之前,它会突然关闭。

  • 我正在尝试使用Springboot反应式webclient进行HTTP调用。远程服务器错误导致连接关闭。 请查找以下使用Webclient进行rest调用的代码。 Webclient创建的代码: 第一次通话后,我收到以下日志: 当我在一段时间后(比如10分钟)拨打电话时,连接将变为非活动状态。我正在获取以下日志: 我发现连接没有正确返回到池。配置中是否缺少任何内容?我是否已正确关闭连接?我想这应该

  • 问题内容: 关闭。 这个问题不能重现或由错别字引起。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我正在使用C#,并且试图连接到由00webhost托管的MySQL数据库。 我在网上遇到错误: 没有使用此参数的mysql主机。 我检查了,一切似乎都很好。 此连接字符串有什么问题? 问题答案: 尝试以这种方式创建连接字符串: