Mongoose插件与Feathers结合使用时,我遇到了一个非常烦人的问题。
这是一个从Mongoose文档here中提取的简单插件,该插件会在每种更新类型上更新文档版本(__v)。它可以作为独立插件正常运行,但是与Feathersjs结合使用时会失败。
当与Feathersjs结合使用插件运行更新和补丁时,Mongoose不能以某种方式将对象ID字符串正确转换为ObjectID。如果我禁用了插件更新和补丁,则可以正常工作。
据我所能确定的调试信息,无论启用还是禁用该插件,从Feathersjs到Mongoose的调用中发送的数据都是相同的。因此,我倾向于说Feathersjs并非罪魁祸首,但又为什么在没有Feathersjs的情况下插件才能正常工作?
我已经设置了示例存储库here。不幸的是,这是重新创建问题所需的最低设置。概要如下:
我添加了测试,以测试有无Feathersjs的插件。要运行测试,请执行npm run test:unit
。 Mongo必须在默认端口(27017)上运行。
我希望有人能帮助我解决这个非常令人沮丧的问题,或者使我指向Mongoose中将ID字符串转换为ObjectID的代码。
答案 0 :(得分:0)
feathers-mongoose
的默认设置是lean
option设置为true
,以提高查询速度。当应该使用模型插件时(我认为应该是这种情况),请在service options中设置lean: false
:
const options = {
Model,
paginate,
lean: false
};
// Initialize our service with any options it requires
app.use('/category', createService(options));