node.js - 通过Nodejs中的查询字符串获取用户
问题描述
我试图通过 id 或某些参数获取用户,但响应始终是所有用户。我使用 get 方法而没有任何查询,只是测试 api 没有任何身份验证。
代码 :
router.get('/:id', async (req, res) => {
const user = await User.findById(req.query.id);
if (!user)
return res.status(404).send("The user with the given ID was not found.");
res.send(user);
});
网址:http://localhost:4000/api/user?id=5e6e8159fd64bf27042a8838
响应总是得到所有用户
任何帮助请
解决方案
从您的代码中我可以理解的是您的路线看起来像router.get('/:id')
。
这意味着 URL 应该类似于/user/{id}
.
您正在触发的 URL/user?id={id}
可能不会到达此路由,因为它没有{id}
路由参数。
到达这条路线的实际 URL 是 -
http://localhost:4000/api/user/5e6e8159fd64bf27042a8838
.
你应该阅读 id 的方式是request.params.id
我怀疑/user
路由指向获取所有用户 API,这就是为什么你要让所有用户做出响应。
推荐阅读
- angular - 使用 RouterLink 重定向时无法触发 ngOninit 和 route.params
- api -
System.Runtime.Serialization.SerializationException - javascript - 将 Jest 与 Puppeteer 一起使用:评估失败:ReferenceError: cov_4kq3tptqc is not defined
- ocaml - OCaml 整个语句未被评估
- javascript - 似乎无法返回值,只有一个承诺
- python-3.x - 如何使用 python 在 Selenium 中启动新的 webdriver 会话(driver.start_session)保持“无头模式”处于活动状态?
- c# - 如何在 asp.net Web API 中过滤掉具有自定义属性的字段?
- firebase - Firebase 动态链接是否有使用配额?
- r - 从R中的字符日期中删除分钟和秒
- javascript - Firebase 身份验证 - Facebook 登录不返回用户信息