Express GET 路由不适用于参数

2023-12-29

我是 Express 和 Mongoose 的新手。我目前正在开发我的第一个项目,这不是教程,我遇到了问题。

我有多个路由,它们在 index.js 中定义如下:

app.use('/api/client',require('./routes/client'));
app.use('/api/host',require('./routes/host'));

在路由中,有多个动词可以使用,例如 PUT 和 POST。 这是有问题的路线(我试图做更多这里介绍的事情,但是这里介绍的方法也不起作用):

router.get('/ama/:id', function (req, res, next) {
    Ama.findById(req.params.id).then(function(Ama){
        res.send(Ama);
    });
});

这应该有效,对吧?它应该返回数据库中具有该 ID 的文档。我已经检查过该文档是否存在,大概检查了 100 次。 现在,如果我大大简化路线,删除 id,并做出简单的响应,路线就可以工作:

router.get('/ama', function (req, res, next) {
    res.send({type:"GET"});
});

这太奇怪了,一旦我添加参数,我就会得到一个:

<pre>Cannot GET /api/host/ama</pre>

在邮递员中。

有任何想法吗? Mongod 正在运行,我的其他路线正在运行。


您似乎正在尝试检索此 URL:

/api/host/ama?id=SOMEID

但是,您为 URL 声明的路由如下所示:

/api/host/ama/SOMEID

换句话说,id 是 URL 路径的一部分,而不是作为查询字符串参数传递(这就是/:id意思是:它是路由应该匹配的 URL 部分的占位符)。

因此,要么通过将 id 添加到路径来更改请求 URL (/api/host/ama/58e395a8c6aaca2560089c‌​e7),或者将您的路由处理程序重写为如下所示:

router.get('/ama', function (req, res, next) {
    Ama.findById(req.query.id).then(function(Ama){
        res.send(Ama);
    });
});

不过,我建议使用前者(将 id 作为 URL 的一部分)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Express GET 路由不适用于参数 的相关文章

随机推荐

  • 使用 jQuery 设置 DIV 及其内容的透明度

    使用 jQuery 设置 HTML DIV 元素及其内容的透明度的最佳方法是什么 my element css opacity 0 7 您是否想实际为每个包含的元素设置不透明度 或者您只是希望它 看起来 就好像子元素具有相同的不透明度 作为
  • 无法安装 gem ffi - Windows 7 64 位

    我是学习 Cucumber Ruby 的新手 我尝试安装 gem ffi 但是当我从控制台执行此操作时 我收到以下消息 安装 ffi 时出错 支持 Ruby 和 RubyGems 的最新版本 ffi gt 0 安装它gem install
  • 从 LiveData 加载后,即使数据保持不变,FastAdapter 也会闪烁

    对于我准备好的问题Github 上的一个简单且有效的示例 https github com afarber android questions tree master TopPlayers 我的示例应用程序使用 okhttp 下载一个包含游
  • JQuery 插件不工作

    所以我有这个插件http www myjqueryplugins com jRating http www myjqueryplugins com jRating我下载了它并在新的空白页面上尝试了一下 看看是否可以做到 有效 现在的问题是我
  • 如何在 Windows 计算机上定义 .pdbrc?

    我该如何定义 pdbrc在我的 Windows 机器上 My pdbrc file alias sl s l alias nl n l alias cl c l 阅读完答案后这个问题 https stackoverflow com ques
  • 使用 CSS 自定义列表项项目符号

    是否可以改变尺寸 li 元素的bullet 看看下面的代码 li list style square I want to change the size of this squared bullet 我似乎找不到任何方法来实现这一目标 我想
  • 如何跟踪 PDPageContentStream 文本输出的位置?

    我正在使用 Java 将输出写入PDDocument 然后将该文档附加到现有文档 然后再将其提供给客户 大部分都运行良好 我在写入时只有一个小问题试图处理内容溢出PDDocument 我想跟踪文本插入到文档中的位置 以便当 光标 超过某个点
  • 类型错误:__init__() 恰好需要 3 个参数(给定 2 个)

    我在这里看到了一些关于我的错误的答案 但它对我没有帮助 我在 Python 课程上绝对是个菜鸟 九月份才开始写这段代码 不管怎样 看看我的代码 class SimpleCounter def init self startValue fir
  • 使用 OpenCV 在给定时间从视频中提取图像

    我的任务是制作一个可以在几秒钟内拍摄视频和时间的实用程序 该实用程序应使用给定的输入从视频中写出 jpeg 图像 例如 让视频名称为abc mpeg提供给工具的时间为20秒 该实用程序应在第 20 秒写出视频中的图像 Import the
  • 图像平铺的缓冲图像

    我想创建一个游戏 其中有许多图像图块可以响应箭头键 我应该使用 BufferedImage 来创建每个单独的图块吗 参考 Java游戏区难度 https stackoverflow com questions 10505000 java g
  • 使用 wkhtmltopdf 从 HTML 生成 Google 网络字体和 PDF

    我在用wkhtml转pdf http code google com p wkhtmltopdf 将 HTML 文件转换为 PDF 格式 它给出了令人惊讶的好结果 渲染 PDF 的效果与 WebKit 完全一样 我在用谷歌网络字体 http
  • Spark-Shell中进度条上的数字是什么意思?

    在我的 Spark Shell 中 当我执行函数时 如下所示的条目意味着什么 Stage7 gt 14174 5 62500 你得到的是一个Console Progress Bar Stage 7 显示您现在所处的阶段 并且 14174 5
  • 为什么 std::forward_list 的拼接整个列表或范围是线性的?

    将一个范围从一个列表拼接到另一个列表可以在恒定时间内完成 但代价是size 的复杂度是线性的 C 11 改变了这种情况std list通过要求size 为常数时间 例如 这破坏了 gcc 的实现 请参阅 C 0x std list size
  • matplotlib:设置图形的宽度或高度而不改变纵横比

    我想选择图形的宽度 同时仍然让 matplotlib 选择它认为合适的纵横比 我知道的每种改变图形大小的方法都需要一个 宽度 高度 元组 这会强制一定的纵横比 有没有办法只指定宽度 或仅指定高度 并允许 matplotlib 选择合适的纵横
  • 如何使 Windows 8 桌面应用程序显示在 Metro UI 中(如任务管理器)?

    最近我注意到Windows 8任务管理器可以在Metro UI中显示 要求是您必须将其设置为始终位于顶部 通过 选项 gt 始终位于顶部 菜单 设置总在最前面后 您可以在Desktop中启动任务管理器 切换到Metro 可以看到任务管理器显
  • 传递对象时防止在 PureComponent 上重新渲染

    使用时纯组件 https reactjs org docs react api html reactpurecomponent与功能组件相比 您的优势在于 当父级更新时 组件并不总是呈现 它实际上仅在组件属性发生更改时才会渲染 在本例中仅当
  • ReactJS:测试包含组件的组件

    我使用 Jest 来测试我的 React 组件 但是 我不知道 或没有看到任何内容 如何测试将方法传递 作为 prop 到子组件的组件 例如 我有 Form MemberList Member FormButton 代码中类似的东西 For
  • 尽管在 pyodbc.dataSources() 中列出,但未找到驱动程序

    我尝试使用 pyodbc 访问 MS Access mdb 数据库 我已经设置了 ODBC 驱动程序 该驱动程序已注册到我的 DSN 我可以在pyodbc dataSources sources pyodbc dataSources dsn
  • 量角器页面对象继承

    鉴于我正在利用页面对象模式构建我的 angularjs Protractor e2e 测试套件 我尽可能合理地将页面对象代码分离在不同的文件中 启用页面对象继承的好方法是什么 javascript经典继承 基于 Object create
  • Express GET 路由不适用于参数

    我是 Express 和 Mongoose 的新手 我目前正在开发我的第一个项目 这不是教程 我遇到了问题 我有多个路由 它们在 index js 中定义如下 app use api client require routes client