Express MEAN.JS:mongoose中间件中的过滤器

Express MEAN.JS:mongoose中间件中的过滤器,express,mongoose,middleware,meanjs,Express,Mongoose,Middleware,Meanjs,这是我在MEAN JS中后端控制器中的代码: exports.list=functionreq,res{ //使用req参数配置过滤器 变量过滤器={ 过滤器:{ 可选:{ 包含:req.query.filter } } }; 变量排序={ asc:{ 描述:“名字” } }; 省份 发现 .过滤器 .ordersort .execfunction err,省{ 如果出错{ 返回res.status400.send{ 消息:errorHandler.getErrorMessageerr }; }

这是我在MEAN JS中后端控制器中的代码:

exports.list=functionreq,res{ //使用req参数配置过滤器 变量过滤器={ 过滤器:{ 可选:{ 包含:req.query.filter } } }; 变量排序={ asc:{ 描述:“名字” } }; 省份 发现 .过滤器 .ordersort .execfunction err,省{ 如果出错{ 返回res.status400.send{ 消息:errorHandler.getErrorMessageerr }; }否则{ res.JSONPProvisions; } }; }; 请求:

名称]=巴塞罗那省

按预期返回筛选结果:

[ { _id:54ba72903f51d73c4aff6da6, 社区:54ba689f5fdfbdea292b8737, 位置:{lat:'41.386290',lng:'2.184988',zoom:'11'}, __v:0, 名称:巴塞罗那省 } ] 当我使用不同的属性时,过滤器停止工作。例如:

社区]=54ba69755fdfbdea292b8738

退回这个:

{ 信息: } 和console.logerr返回以下内容:

[CastError:path社区中的值/54ba689f5fdfbdea292b8737/i转换为ObjectId失败] 消息:“对于路径社区中的值/54ba689f5fdfbdea292b8737/i,强制转换到ObjectId失败”, 名称:“卡斯特罗”, 类型:“ObjectId”, 值:/54ba689f5fdfbdea292b8737/i, 路径:'社区'} 原始文件:

[ { _id:54ba72903f51d73c4aff6da6, 社区:54ba689f5fdfbdea292b8737, 位置:{lat:'41.386290',lng:'2.184988',zoom:'11'}, __v:0, 名称:巴塞罗那省 }, { _id:54ba73c33f51d73c4aff6da7, 社区:54ba69755fdfbdea292b8738, 位置:{lat:'42.4298846',lng:'-8.6446201999963',缩放:'11'}, __v:0, 姓名:Pontevedra省 } ]
也许这不是最好的方法,但有效:

exports.list=functionreq,res{ var community={community:}; community.community=mongoose.Types.objectedreq.query.filter.community; console.logcommunity; 变量过滤器={ 过滤器:{ 可选:{ 包含:社区 } } }; 变量排序={ asc:{ 描述:“名字” } }; 省份 发现 .过滤器 .ordersort .execfunction err,省{ console.logerr; 如果出错{ 返回res.status400.send{ 消息:errorHandler.getErrorMessageerr }; }否则{ res.JSONPProvisions; } };
};你说的“不工作”是什么意思?您是否收到状态代码400?您的描述显示了一些模式,但没有显示初始数据-您希望返回什么数据?我没有收到状态代码400。返回所有而不仅仅是已过滤的段。该字段名有效,但如果我改为社区,另一个字段将不起作用。谢谢我把最初的数据放在帖子里。