该视频仅会员有权观看
立即开通课程「Node 框架 Express 实践」权限。
- 需要更新用户界面,检查用户当前登录密码及更新数据。
- 创建一个中间件
validateUpdateUserData
以处理这些数据验证。
- 从请求体
request.body
解构出validate
和update
对象。
validate
应包含当前用户密码,update
包括用户希望更新的信息。
- 从
request.user
解构用户ID以确认用户登录状态。
- 使用
try-catch
块来处理验证,在catch
中处理错误。
- 验证用户是否提供了密码,若未提供则触发异常“password is required”。
- 获取用户数据,包括密码,以验证提交的密码是否与当前密码匹配。
- 如果密码不匹配,触发异常“password does not match”。
- 检查是否用户名已占用,若占用则触发异常“user already exists”。
- 如果用户试图更新与原密码相同的密码,触发“password is the same”异常。
- 在用户数据中更新密码前,使用
bcrypt
进行hash处理。
- 在异常处理器中添加处理“password is the same”异常的逻辑,返回状态码400和相应错误信息。