我正在为登录用户构建一个重新发送验证电子邮件按钮。我的计划是让用户点击个人资料页面上的按钮,它会直接将电子邮件发送到用户的电子邮件地址。
点击按钮时,我似乎一直在将用户的数据发送到后端代码。
当我在路由设置中检查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.params
和req.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传递给后端代码,用于查找用户并执行操作。
表单不发送参数id。
输入文档
<input name="id" type="text" value="youridvalue" />
您可以使用从后端检索
req.body.id
确保使用express.bodyParser((以便能够访问请求中的正文
仅供参考:请求参数是指URL中带有":"的项目,查询指与"?"关联的项目Hanfei Sun