You need to enable JavaScript to run this app. Express接口按查询参数筛选时如何返回所有匹配对象而非首个
优惠活动
大模型
产品
解决方案
定价
更多

Express接口按查询参数筛选时如何返回所有匹配对象而非首个

问题原因

你当前代码仅返回第一个匹配结果,是因为使用了JavaScript数组的find()方法,该方法逻辑为找到第一个符合条件的元素后就终止遍历,直接返回该元素。要返回所有符合条件的元素,替换为filter()方法即可,该方法会遍历整个数组,返回包含所有匹配元素的新数组。

修改后代码

app.get("/movies", (req, res) => {
    // 初始化结果为全量电影列表
    let filteredMovies = movies;

    // 按标题过滤
    if (req.query.title) {
        filteredMovies = filteredMovies.filter(movie => movie.title === req.query.title);
    }
    // 按演员过滤
    if (req.query.actor) {
        filteredMovies = filteredMovies.filter(movie => movie.actor === req.query.actor);
    }
    // 按导演过滤
    if (req.query.director) {
        filteredMovies = filteredMovies.filter(movie => movie.director === req.query.director);
    }
    // 新增按类型过滤,支持genre参数查询
    if (req.query.genre) {
        filteredMovies = filteredMovies.filter(movie => movie.genre === req.query.genre);
    }

    res.json(filteredMovies);
});

效果说明

请求http://localhost:8081/movies?actor=Orlando时,会返回符合JSON规范的数组结果:

[
  {
    "title": "Lord of the Rings",
    "actor": "Orlando",
    "genre": "adventure",
    "director": "person"
  },
  {
    "title": "Pirates of the Caribbean",
    "actor": "Orlando",
    "genre": "adventure",
    "director": "person"
  }
]

同时该代码天然支持多条件叠加过滤,比如请求?actor=Christian Bale&genre=adventure会返回同时满足两个条件的所有电影。

内容的提问来源于stack exchange,提问作者Jop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:42:00