Node.js控制器未接收用户ID,编辑页面无法加载用户数据
问题解决:编辑用户页面无法加载数据
核心问题:ID获取方式错误
你的路由是GET /editUser/:id,属于URL路径参数,不能用req.body.id获取,req.body仅用于POST/PUT等请求的表单或JSON数据。正确的获取方式是req.params.id。
修正后的控制器代码
static async editUser(req, res) { // 从URL参数中获取ID const id = req.params.id; console.log("ID: ", id); try { const user = await User.findOne({ where: { id: id }, raw: true }); // 处理用户不存在的情况 if (!user) { return res.status(404).send("用户不存在"); } res.render('editUser', { user }); } catch (err) { console.error("获取用户数据失败:", err); res.status(500).send("服务器错误"); } }
额外优化建议
- 编辑页面增加空值判断:避免因
user为undefined导致模板渲染报错,可在页面中添加条件判断:
{{#if user}} <h1>Editar o usuário {{user.name}}</h1> <form action="/editUser/{{user.id}}" method="post" class="d-flex align-items-center justify-content-center flex-column p-2 m-2 "> <input type="hidden" name="id" value="{{user.id}}"> <!-- 表单内容 --> </form> {{else}} <p>未找到该用户</p> {{/if}}
- 检查路由与表单提交的对应关系:确保POST请求的编辑接口(
/editUser/:id)已正确配置,用于处理表单提交后的更新逻辑。
内容的提问来源于stack exchange,提问作者Alan marinho
相关产品推荐
相关产品推荐

