Mongoosejs中间件钩子“ pre”查找问题

时间:2018-12-07 19:43:37

标签: javascript node.js mongodb mongoose middleware

我需要帮助。我有一个特定的情况,在查找查询发生之前,需要填充我的Mongoose集合。

原因是,我需要将用户输入的过滤后的参数与其他集合中的总体引用相对应。

问题: 我正在尝试使用pre挂钩,以便可以在“ SampleSchema”上的find查询激发之前填充所需的路径。如果我尝试在不预先填充架构的情况下将过滤器应用于SampleSchema,则查找结果将无法正确过滤结果,并且会出错。

ERROR: { CastError: Cast to ObjectId failed for value "Foo" at path "program" for model "Sample" ...}

因此,无法正确使预查找中间件挂钩正常工作。

SampleSchema.pre('find', function() {
  console.log('HELLO I FIRED FIND PRE HOOK');
  this.populate('program history type status')
}

我该如何处理?

谢谢

1 个答案:

答案 0 :(得分:0)

猫鼬没有预找钩子。您只会得到validatesaveremove。您可以阅读以下内容的更多信息:https://mongoosejs.com/docs/middleware.html