在Mongoose中设置post-find转换钩子的最简单方法

Pre*_*hev 2 mongoose mongodb node.js

我是Mongoose的新手并且已经获得了一个扩展项目.我很快就掌握了前钩和后钩的概念,但是想知道为什么没有这样的钩子find,但只是为了savedelete.在检索到的对象上设置某些转换的最简单方法是什么?当然,我想在模型级别执行此操作,而不是每次检索某些对象时都这样做.

我找到了这个插件:https://www.npmjs.com/package/mongoose-post-find我认为它能很好地完成这项工作,但由于我对MongoDB很新,我想在这里问一下,确定我不会最终遇到性能问题.

Joh*_*yHK 9

这就是'init'钩子的用途; 它是在find查询加载的每个doc上执行的.

schema.post('init', function (doc) {
    // Transform doc as needed here.  "this" is also the doc.
});
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它仅在中间件文档中简要提及.

  • [Mongoose版本4现在有一个"查找"的钩子](https://www.mongodb.com/blog/post/introducing-version-40-mongoose-nodejs-odm).`init`和`find`有什么区别,什么时候应该使用`init`来代替`find`? (3认同)
  • 这似乎并没有编辑返回给 `find` 调用者的文档。您能否提供一个示例,您可以在其中编辑文档并将结果返回给“查找”吗? (3认同)