【问题标题】:What are all the mongoose events and where are they documented?所有的猫鼬事件是什么,它们记录在哪里?
【发布时间】:2019-06-26 09:51:21
【问题描述】:

我可以用 mongoose 处理各种事件,例如

mongoose.connection.on("connecting", () => this.onConnecting());

我遇到的一些人:

  • 正在连接
  • 错误
  • 已连接
  • 打开
  • 重新连接
  • 断开连接

我找不到这些文件的记录位置。我想也许它们不是 mogoose 的一部分,而是 mongodb 本身的一部分,但我在 mongo 网站上也找不到它们。

在哪里可以找到记录的这些事件(和其他事件)?

【问题讨论】:

标签: mongodb mongoose


【解决方案1】:

如果发现事件集中在源代码中:

https://github.com/Automattic/mongoose/blob/2176150b3d463747ba66b76e37504ee8ffc3f738/lib/connectionstate.js

这是一个复制意大利面:

const disconnected = 'disconnected';
const connected = 'connected';
const connecting = 'connecting';
const disconnecting = 'disconnecting';
const uninitialized = 'uninitialized';

更新:

查看@ajbieber 的答案以获取完整列表。

【讨论】:

  • 这不是文档,可以随时更改。不过,我很欣赏这种努力,因为现在我知道还有“未初始化”。问题是所有博客和 SO 帖子都是复制意大利面,但奇怪的是,任何地方都没有文档......(好吧,我设法找到的文档)
  • 我发现了这个:mongoosejs.com/docs/api.html#connection_Connection-readyState 但确实它并没有显示所有内容,可能值得提出一个问题,询问是否可以将其添加到文档中并使其与连接状态保持同步.js 文件可能吗?
【解决方案2】:

您可以在 github 的源代码中找到它。 https://github.com/Automattic/mongoose/blob/master/lib/connection.js

列出的事件比给定答案多得多,它们是:

  • @event connecting:在此连接上执行connection.openUri() 时发出。
  • @event connected:当此连接成功连接到数据库时发出。在reconnected 场景中可能会发出多次次。
  • @event open:在我们 connectedonOpen 在所有这些连接模型上执行后发出。
  • @event disconnectingconnection.close() 执行时发出。
  • @event disconnected:与数据库断开连接后发出。
  • @event close:在我们在所有这些连接模型上执行disconnectedonClose 之后发出。
  • @event reconnected:在我们connected 和随后disconnected 之后发出,随后又成功连接。
  • @event error:在此连接发生错误时发出。
  • @event fullsetup:在副本集场景中发出,当连接字符串中指定的主节点和至少一个辅助节点连接时。
  • @event all:在副本集场景中,当连接字符串中指定的所有节点都连接时发出。

【讨论】:

  • 这不是真正的文档,但我觉得这是我们在 Node 世界中所能获得的最好的。谢谢你。
  • 是的,很抱歉。 Mongoose 文档真的很糟糕......根据我的经验,它们通常不会记录稍微复杂的东西 -_-
  • 什么时候调用onOpen?
  • 注意还有模型事件,比如“index”。
猜你喜欢
  • 2019-12-23
  • 2022-10-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
相关资源
最近更新 更多