Mongoose 错误 - 升级后没有“toObject”方法

2023-12-31

我有一个猫鼬模型,我称之为toObject钩子中的方法:

Product.post('init', function() {
   // if (typeof this.toObject === 'function') - works but why do I need it?
    this._original = this.toObject();
});

这在过去工作得很好,但在 Mongoose 升级后会抛出此错误:

TypeError: Object #<EventEmitter> has no method 'toObject'
at EventEmitter.Product.pre.self (/opt/run/snapshot/package/models/product.js:426:25)
at EventEmitter.emit (events.js:95:17)
at model.Document.(anonymous function) [as emit] (/opt/run/snapshot/package/node_modules/mongoose/lib/document.js:88:42)
at model.Document.init (/opt/run/snapshot/package/node_modules/mongoose/lib/document.js:271:8)
at completeMany (/opt/run/snapshot/package/node_modules/mongoose/lib/query.js:1075:12)
at Object.cb (/opt/run/snapshot/package/node_modules/mongoose/lib/query.js:1030:11)
at Object._onImmediate (/opt/run/snapshot/package/node_modules/mongoose/node_modules/mquery/lib/utils.js:137:16)
at processImmediate [as _immediateCallback] (timers.js:345:15)

我应该注意到,启动应用程序时会发生这种情况。我可以进行检查以防止错误,但问题是我需要 toObject 函数,并且想了解如何引发此错误。

我没有找到有关任何更改的文档。有任何想法吗?

Edit我意识到我的问题是由松动引起的package.jsonMongoose 的规范导致我的主机(nodejitsu)使用我认为的4.x版本而不是我的本地版本3.8.x分支。如果我完全锁定版本,则不会出现问题。


介于最新版本 3.8.x 和 4.0 之间的帖子init钩子已更改,但未记录。变更前this引用了当前文档,但现在this是触发钩子调用的事件发射器。访问当前文档的新方法是在钩子函数中添加一个参数,就像 pre 一样save and remove hooks.

schema.post('init', function(doc) {
    doc._original = doc.toObject();
});

不幸的是,由于此更改,添加到文档中的任何非架构属性似乎在发布之间丢失init和预save钩子,所以现在没有办法解决这个问题。

我打开了一个问题(#2952 https://github.com/Automattic/mongoose/issues/2952)上周五在 Github 上。目前有 387 个未解决的问题,所以我不确定这个问题能多快得到解决。如果我听到任何消息,我会发布更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose 错误 - 升级后没有“toObject”方法 的相关文章

随机推荐

  • SQL 查询获取具有列最大值的表的行详细信息

    我有两张桌子 表格1 Num 1 2 3 Table 2 Num Date Amount 1 12 31 30 1 12 30 31 1 12 29 20 2 12 31 100 2 12 30 90 3 12 31 12 4 11 1 1
  • 烤宽面条自动编码器:如何使用解码器部分?

    假设我在烤宽面条中有一个自动编码器 有两个编码层和两个 InverseLayers 作为解码器 input InputLayer l1 Conv1DLayer input l2 DenseLayer l1 decoder part l2p
  • capybara-webkit:自动保存 RSpec 测试失败的屏幕截图

    当使用 capybara webkit 和 Rspec 测试失败时 如何自动保存 html 和屏幕截图 当 RSpec 测试失败时如何执行回调 加分点 如何避免出现以下错误 Capybara Driver Webkit WebkitInva
  • JS mouseenter 触发两次

    问题是关于事件 mouseenter 被触发两次 代码在这里 http jsfiddle net xyrhacom http jsfiddle net xyrhacom HTML div class elt text1 div class
  • Java、JPA、Glassfish、无效资源:jdbc/__default__pm

    我使用 Glassfish 3 1 2 2 构建 5 JPA EclipseLink MySQL 我通过 Glassfish 管理面板创建了 MySQL 池 从 GF 管理面板 Ping 到 MySQL 正常 我使用 persistence
  • 从 iframe 触发 jQuery 事件

    这是场景 我在 iframe 内发生了事件 到目前为止一切都运行良好 我刚刚遇到了一个问题 我想将事件从 iframe 分派到父级 我用它来触发 iframe 中的事件 body window parent document trigger
  • CMake:找到用 MinGW/MSYS 构建的 wxWidgets?

    我使用 MinGW 编译了 wxWidgets 2 8 12 为了实际进行构建 我通过 MSYS shell 调用了随 wxWidgets 一起分发的 autotools 构建文件 使用安装前缀为 H MinGW libs 这样做的结果是我
  • Android 拼写检查器设置意图

    在 Android 中 我可以启动键盘与输入设置对话框使用ACTION INPUT METHOD SETTINGS intent getPresenter startActivity new Intent Settings ACTION I
  • 如何找出 R 函数调用中使用了哪些参数值?

    我想知道是否有一个 Base R 函数来提取特定函数调用中使用的参数值 例如 对于每个对象x y and z下面 是否有一种通用的方法来提取参数名称 例如 n sd rate scale 正在使用和值 例如 1e4 for n 由用户或系统
  • Java:如何通过管道将InputStream传输到标准输出?

    有没有一种简单 因此快速 的方法来实现这一点 基本上只需要一些输入流 可能类似于socket getInputStream 并让流的缓冲区自动重定向到标准输出 没有简单的方法可以做到这一点 因为InputStream有一个拉式界面 当Out
  • 为什么重写方法不能抛出比被重写方法更广泛的异常?

    我正在阅读 Kathe Sierra 的 SCJP 6 书 并发现了关于在重写方法中抛出异常的解释 我完全没听懂 谁能给我解释一下吗 重写方法不得抛出新的已检查异常 或者比被重写方法声明的更广泛 例如 一个 声明 FileNotFoundE
  • PHP implode 数组生成 mysql IN 标准

    我有一个如下所示的函数 public function foo cities array anaheim baker colfax db global instance of Zend Db Adapter Pdo Mysql query
  • 模拟用户输入

    android 可以模拟用户输入吗 例如 有一些服务或一些线程将在后台工作并启动一些模拟用户输入的东西 因此如果我们在主屏幕上并且发生了模拟输入 假设单击 那么如果模拟的坐标是应用程序应该启动单击指向主屏幕上的某个图标 或者如果模拟输入指向
  • 微调器中的默认文本填充是什么

    我有一个微调器和一个风格类似于微调器的文本视图 我想对齐两者中的文本 但我不知道微调器中的文本有多少填充 你可以找到一件事安卓风格 https android googlesource com platform frameworks bas
  • 如何使用 Python 访问 Ring 0?

    这个答案指出Python中类的命名不是由于特殊特权而完成的 here https stackoverflow com questions 5602439 reasons behind naming in easy to confuse py
  • 如何比较 4 列

    我正在使用 Excel 中的表格 以下是工作表的示例 A B C D al id id id df id desc desc df id id desc df id id id ff desc id desc ff desc id desc
  • OS X 上的 sed - 似乎无法在正则表达式中使用 +

    现在根据所有文献 echo 1234abcd sed s 0 9 g 应该输出 abcd 和 echo abcd sed s 0 9 g 应该输出abcd 但在 OS X 10 4 11 上 第一个表达式输出 1234abcd 在第一个示例
  • SSLSocket 创建时发生 Java 异常

    在代码中 System setProperty javax net ssl trustStore cacerts System setProperty javax net ssl trustStorePassword pwdCacerts
  • 我可以在 Kafka 集群中拥有数百个或数千个主题吗?

    我有一个数据流用例 我希望根据每个客户存储库定义主题 可能约为 100 000 个 每个数据流将是一个带有分区的主题 约为几个 10 定义流程的不同阶段 Kafka 适合这样的场景吗 如果不是 我将如何重塑我的用例来处理此类场景 此外 即使
  • Mongoose 错误 - 升级后没有“toObject”方法

    我有一个猫鼬模型 我称之为toObject钩子中的方法 Product post init function if typeof this toObject function works but why do I need it this