MEAN栈开发调用Mongoose find()报filter参数需为对象怎么解决?
错误原因
- Mongoose 模型的
find()方法第一个入参要求传入查询条件对象,你当前直接将路径参数req.params.name(字符串类型,比如示例中的1984)作为入参传入,参数类型不匹配触发了语法错误,进而导致服务端返回500内部错误。
修复方案
修改后端接口的查询逻辑,将传入find()的参数改为指定匹配字段的对象即可:
booksRoute.route('/:name').get((req,res,next)=>{ // 构造查询条件对象,指定匹配name字段 const query = { name: req.params.name } BookModel.find(query,(error,data)=>{ if (error){ return next(error) ; } else { res.json(data) } }) })
如果需要实现模糊匹配书名的效果,可以把查询条件改为正则匹配:
// i 标识忽略大小写 const query = { name: new RegExp(req.params.name, 'i') }
内容的提问来源于stack exchange,提问作者Mohamed Ali Mani
相关产品推荐
相关产品推荐

