有没有办法将Mongoose中间件与查询构建器一起使用?

Joe*_*lls 5 mongoose mongodb node.js

这就是我想要做的.

我在一个受信任的环境中使用mongoosejs(也就是传递的内容总是被认为是安全的/预验证的)我需要在我运行的每个查询中传递"select"和"填充"内容.我对每个请求都以一致的方式得到这个.我想做这样的事情:

var paramObject = sentFromUpAbove; // sent down on every Express request
var query = {...}
Model.myFind(query, paramObject).exec(function(err, data) {...});
Run Code Online (Sandbox Code Playgroud)

我将传递给中间件或其他构造的函数很简单,只需:

function(query, paramObject) {
  return this.find(query)
    .populate(paramObject.populate)
    .select(paramObject.select);
}
Run Code Online (Sandbox Code Playgroud)

和findOne一样.我知道如何通过直接扩展Mongoose来做到这一点,但这感觉很脏.我宁愿使用中间件或其他一些构造,以一种干净的,有点未来的方式来做到这一点.

我知道我可以通过模型逐个模型来完成这个,但我想在每个模型上普遍做到这一点.有什么建议?

ed2*_*209 0

您可以执行与此类似的操作,但不幸的是查找操作不会调用prepost因此它们会跳过中间件。