Mongoose插件与Feathersjs结合使用时不起作用



我在使用Mongoose插件和Feathers时遇到了一个非常烦人的问题。

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

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

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

我在这里设置了一个回购示例。不幸的是,这是重新创建问题所需的最低设置。昏迷状态如下:

  • 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-使用Features测试模式和插件

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

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

feathers-mongoose的默认设置是lean选项设置为true,以加快查询速度。当应该使用模型插件时(我认为这里应该是这样),在服务选项中设置lean: false

const options = {
Model,
paginate,
lean: false
};
// Initialize our service with any options it requires
app.use('/category', createService(options));

相关内容

  • 没有找到相关文章

最新更新