有没有办法为 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)
答案 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中支持(和现在已弃用),因此没有任何内置支持。