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

Mongoose findOne查询无响应问题求助(REST API+ROBO 3T)

问题:GET请求查询特定文章时服务器无返回内容

开发REST API时,通过本地ROBO 3T数据库获取数据,使用mongoose的findMany()方法能正常返回所有文章数据,但调用findOne()查询特定文章时,明明数据库中存在对应数据,服务器却未返回任何内容。

问题代码

app.route('/articles/:specificArticleTitle') 
  // req.params.specificArticleTitle ----> 对应请求传入的文章标题
  .get((req, res) => {
    Article.findOne({
      title: 'req.params.specificArticleTitle'
    }).then((contentReturned) => {
     
      res.send(contentReturned);

    }).catch((err) => {
      res.send(err);
    });
  });

问题原因

代码中把req.params.specificArticleTitle用单引号包裹成了字符串字面量,这意味着你在查询标题等于固定字符串'req.params.specificArticleTitle'的文档,而不是使用请求参数中传入的实际标题值。数据库中不存在这个标题的文档,所以findOne()返回null,服务器也就没有内容返回。

解决方案

去掉单引号,直接引用req.params.specificArticleTitle变量作为查询条件的值,同时可以增加未找到数据的判断,让接口更健壮:

app.route('/articles/:specificArticleTitle') 
  .get((req, res) => {
    Article.findOne({
      title: req.params.specificArticleTitle
    }).then((contentReturned) => {
      if (contentReturned) {
        res.send(contentReturned);
      } else {
        res.status(404).send('未找到对应文章');
      }
    }).catch((err) => {
      res.status(500).send(err);
    });
  });

相关场景说明

  • 数据库中存在标题为"REST"的文章文档
  • Postman请求路径为/articles/REST,原代码的错误查询条件导致无法匹配到对应数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:00:10