如何为mongoose查询制作对象?

时间:2016-09-15 13:57:19

标签: node.js mongodb express mongoose

有没有办法为 mongoose 构建完整对象以用作查询?在制作搜索路径时,我需要传递许多查询参数,并在 express 中间件中对它们进行清理。从那些我想构建查询对象。

我最终得到了类似的东西:

在midleware内部:

res.locals.filter = {
   query: ...,
   projection: ...,
   sort: ...,
   limit: ....,
}
路由器内部

User.find(res.locals.filter.query)
    .sort(res.locals.filter.sort)
    .limit(res.locals.filter.limit)
    .exec()

有没有办法格式化我的过滤器,所以我可以一次传递它?找到了一些例子,但似乎没有什么对我有用......

换言之,请执行以下操作:

User.query(filter)

2 个答案:

答案 0 :(得分:0)

您可以在架构上添加query作为static方法来执行此操作:

userSchema.statics.query = function(filter) {
    return this.find(filter.query).sort(filter.sort).limit(filter.limit);
};

然后您可以将其称为:

User.query(res.locals.filter).exec(callback);

答案 1 :(得分:0)

正如 JohnnyHK 指出的那样,find调用$query$orderBy等对象字段的样式仅在shell中支持(和现在已弃用),因此没有任何内置支持。