【问题标题】:Error: WHERE parameter "id" has invalid "undefined" value, reactjs错误:WHERE 参数“id”具有无效的“未定义”值,reactjs
【发布时间】:2021-07-28 20:34:07
【问题描述】:

我正在处理一个帖子有很多 cmets 的项目,我正在尝试获取 cmets 的数量并将它们显示在 UI 中。

但我遇到了错误

Error: WHERE parameter "id" has invalid "undefined" value

这是服务器端:

router.get("/commentsCounter/:id", async (req, res) => {
  const PostId = req.body.PostId;

  const commentsCounter = await Comments.count({
    where:{
      id: PostId,
    }
  });
  res.json({ commentsCounter });
  console.log("commentsCounter", commentsCounter);
});

这是客户端:

     useEffect((PostId) => {
    axios.get(`http://localhost:3007/comments/commentsCounter/${id}`).then((res) => {
      console.log('setCommentsCounter', res.data.commentsCounter)

      setCommentsCounter(res.data.commentsCounter)
    });
  }, []);

有什么建议吗? 谢谢:)

【问题讨论】:

  • 您正在发出get 请求。试试req.params.id
  • 好的,我试过了,但它返回一个零 (0)
  • {cmetsCounter.id} 这是我渲染它以显示在 ui 中的位置
  • 在发出请求(即${id})之前,尝试控制台在前端记录您的id var。
  • 好的,这就是结果。 CommentsCounter 未定义

标签: mysql node.js reactjs sequelize.js


【解决方案1】:

您的 id 错误,它应该类似于 req.params.id 或 req.query.id,具体取决于您使用的框架。

【讨论】:

  • 是的,你是对的,但是当我尝试 req. params.id 它只是返回零
【解决方案2】:

你应该从request.params.id而不是request.body获得请求id

request.body 仅包含通过POSTPUTDELETE 而不是通过GET 方法发送到服务器的数据。您已将路由定义为 GET 方法,请求的主体将始终为 empty

由于您已将请求处理程序的路由定义为router.get("/commentsCounter/:id", ...),因此您可以像这样访问id 参数

router.get("/commentsCounter/:id", async (req, res) => {
    const PostId = req.params.id;

    // here the PostId will be equal to the id in the URL
});

【讨论】:

  • 嘿,非常感谢,我按照你说的尝试了这个,就像这样,但它返回未定义。 router.get("/cmetsCounter/:id", async (req, res) => { const PostId = req.params.id; const cmetsCounter = await Comments.count({ where:{ id: PostId, } }); res.json({ cmetsCounter }); console.log("cmetsCounter", req.params.PostId); });
  • 您尝试从浏览器访问的确切 URL 是什么
  • 通过本地主机
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2016-06-14
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多