Node Express 无法弄清楚如何更新用户详细信息

Node Express can't figure out how to update user details

好的,一旦用户登录,我就会将他们的详细信息存储在 req.user 中。然后,用户应该能够在使用 /profile 路由呈现的表单中编辑他们的详细信息(名字、姓氏、电子邮件),如下所示:

    app.get('/profile', checkAuthenticated, (req, res) => {
      res.render('profile.ejs', req.user);
    })

表格如下:

<form class="form__inputs" action="/update-profile" method="post">
  <div class="form__input">
    <input id="firstname" name="firstname" type="text" value="<%=firstname%>" required />
    <label for="firstname">Firstname</label>
  </div>
  <div class="form__input">
    <input id="lastname" name="lastname" type="text" value="<%=lastname%>" required />
    <label for="lastname">Lastname</label>
  </div>
  <div class="form__input form__email">
      <input id="email" name="email" type="email" value="<%=email%>" required />
      <label for="email">Email</label>
  </div>
  <button class="form__button" type="submit">Update</button>
</form>

提交表单后,我希望用户被重定向到 /update-profile 路由,在那里我可以对数据库执行更新 (MySQL)。

app.put('/update-profile', (req, res) => {
  console.log(req.params)
  console.log(req.body)
  res.redirect('/')
})

但是我收到“无法 POST /update-profile”错误。

我正打算使用存储在 req.user 中的 user_id 和存储在 req.body.params 中的新用户数据(名字、姓氏、电子邮件)来更新数据库,但是我我的路线显然有点混乱。

任何帮助将不胜感激,非常感谢您抽出宝贵时间!

您似乎正在收听 Express 应用中的 PUT 请求,但发送的是 POST。

app.post('/update-profile', (req, res) => {
    console.log(req.params)
    console.log(req.body)
    res.redirect('/')
});

如果您将代码更改为此,它应该可以工作。