【问题标题】:Got 'undefined' when checking 'req.params.id' in ExpressJs route在 ExpressJs 路由中检查“req.params.id”时得到“未定义”
【发布时间】:2020-09-20 16:54:56
【问题描述】:

我正在为已登录的用户构建一个重新发送验证电子邮件按钮。 我的计划是让用户点击个人资料页面上的按钮,它会直接将电子邮件发送到用户的电子邮件地址。

单击按钮时,我似乎无法将用户数据发送到后端代码。

当我检查路线设置中的req.params.id 时,我得到了undefined

这是我的路线:

//route for requsting verification email
router.post("/verify", middleware.isLoggedIn, async(req, res) => {
    console.log(req.params.id);
})

这里是 ejs/html:

<form action="/verify" method="POST">
   <input type="submit" class="btn btn-success btn-sm" value="Verify">
</form>

我认为我的 html 代码需要一些 onClick 事件来显式地将用户的 id 发送到服务器代码,以便找到正确的用户。但是,我不知道如何做到这一点。提前感谢您的帮助!

更新 感谢@Mizibi 帮助我了解req.paramsreq.body 之间的区别。

所以我所做的就是以这样的形式添加另一个隐藏的输入标签:

<form action="/verify" method="POST">
     <input type="hidden" name="id" value="<%= currentUser.id %>" >
     <input type="submit" class="btn btn-success btn-sm" value="Verify">
</form>

我把后端req.params.id改成req.body.id,这样会将currentUser的id传给后端代码,用于查找用户并进行操作。

【问题讨论】:

    标签: javascript html node.js express


    【解决方案1】:

    参数id不是表单发送的。

    Input doc

    <input name="id" type="text" value="youridvalue" />
    

    你可以从后端检索它:

    req.body.id
    

    确保使用 express.bodyParser() 以便能够在请求中访问正文

    仅供参考:req.params 指的是 URL 中带有“:”的项目,req.query 指的是与“?”关联的项目Hanfei Sun

    【讨论】:

    • 谢谢!这很有帮助!我将更新我在代码中所做的事情,以防其他人遇到同样的问题。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2020-11-19
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多