首页 > 解决方案 > 与 Feathersjs 结合使用时,Mongoose 插件不起作用

问题描述

将 Mongoose 插件与 Feathers 结合使用时,我遇到了一个非常烦人的问题。

这是一个直接的插件,取自这里的 Mongoose 文档,可在每种更新类型上更新文档版本 (__v)。它作为独立插件运行良好,但与 Feathersjs 结合使用时会失败。

在使用插件与 Feathersjs 结合运行更新和补丁时,Mongoose 未将对象 ID 字符串正确转换为 ObjectID。如果我禁用插件更新和补丁确实有效。

据我能够确定调试,从 Feathersjs 到 Mongoose 的调用中发送的数据在启用或禁用插件的情况下都是相同的。所以我倾向于说 Feathersjs 不是罪魁祸首,但话说回来,为什么没有 Feathersjs 插件也能工作?

我在这里设置了一个示例 repo 。不幸的是,这是重现问题所需的最低设置。傻逼如下:

我添加了测试来测试有和没有 Feathersjs 的插件。要运行测试,请执行npm run test:unit. Mongo 必须在默认端口 (27017) 上运行。

我希望有人可以帮助我解决这个非常令人沮丧的问题,或者将我指向 Mongoose 中的代码,其中 id 字符串被转换为 ObjectID。

标签: mongodbmongoosefeathersjs

解决方案


的默认设置feathers-mongooselean选项设置true为更快的查询。当应该使用模型插件时(我认为应该是这种情况),lean: false服务选项中设置:

  const options = {
    Model,
    paginate,
    lean: false
  };

  // Initialize our service with any options it requires
  app.use('/category', createService(options));

推荐阅读