You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:36:01