mongodb - 与 Feathersjs 结合使用时,Mongoose 插件不起作用
问题描述
将 Mongoose 插件与 Feathers 结合使用时,我遇到了一个非常烦人的问题。
这是一个直接的插件,取自这里的 Mongoose 文档,可在每种更新类型上更新文档版本 (__v)。它作为独立插件运行良好,但与 Feathersjs 结合使用时会失败。
在使用插件与 Feathersjs 结合运行更新和补丁时,Mongoose 未将对象 ID 字符串正确转换为 ObjectID。如果我禁用插件更新和补丁确实有效。
据我能够确定调试,从 Feathersjs 到 Mongoose 的调用中发送的数据在启用或禁用插件的情况下都是相同的。所以我倾向于说 Feathersjs 不是罪魁祸首,但话说回来,为什么没有 Feathersjs 插件也能工作?
我在这里设置了一个示例 repo 。不幸的是,这是重现问题所需的最低设置。傻逼如下:
- src/models/schema/categories.schema.js - Mongoose 模式定义示例
- src/mongoose/always-update-version-key.js - 插件
- test/mongoose/always-update-version-key.test.js - 在没有 Feathers 的情况下测试模式和插件
- test/services/category.test.js - 使用 Feathers 测试模式和插件
我添加了测试来测试有和没有 Feathersjs 的插件。要运行测试,请执行npm run test:unit
. Mongo 必须在默认端口 (27017) 上运行。
我希望有人可以帮助我解决这个非常令人沮丧的问题,或者将我指向 Mongoose 中的代码,其中 id 字符串被转换为 ObjectID。
解决方案
推荐阅读
- angular - Angular RxJS 订阅 Observer 对象的行为 - 下一个/错误回调中的 this
- html - 获取错误类型错误:无法读取未定义的属性“已完成”
- ethereum - Solidity 中的委托调用 - 代理模式
- google-apps-script - 在表格中制作 SUM 查询导入范围功能时遇到问题
- haskell - 为Haskell中的每个整数创建一个类型?
- sql - 选项的好处\复制和复制哪个不同的客户端和服务器
- java - 我在 JFrame 中有几个 JComboBoxes,它们在非常特定的情况下会减慢自定义绘图 JPanel 的速度。有谁知道为什么会这样?
- python - 致命错误:使用 pyenv 时找不到“arrayobject.h”文件
- google-api - 在 URL 中键入时出现页面速度问题:“引荐来源网址 https://www.googleapis.com/ 与您的 API 密钥上配置的引荐来源网址限制不匹配。”
- c++ - 如何修复错误 2298 和 2563