reactjs - 更新用户信息 sequilze express
问题描述
我正在尝试更新用户信息。用户创建了一个只有名称电子邮件和密码的帐户,我正在尝试使用其他可选字段更新用户信息如果不使用数据库中的旧密码,我如何检查密码是否已更改更新密码。我在我的前端使用反应。我正在使用 sequilize orm - mysql。我怎么能做到这一点。当我什至尝试用新密码覆盖密码时,它给了我一个错误。请帮助。谢谢
router.post("/update", (req, res) => {
const dataToday = new Date();
const studentData = {
name: req.body.name,
email: req.body.email,
password: req.body.password,
phoneNumber: req.body.phoneNumber,
about_me: req.body.about_me,
city: req.body.city,
country: req.body.country,
company: req.body.company,
school: req.body.school,
hometown: req.body.hometown,
gender: req.body.gender,
created: dataToday
};
console.log(studentData);
Student_Info.findOne({
where: {
email: req.body.email
}
})
.then(student => {
if (student) {
bcrypt.hash(req.body.password, 10, (err, hash) => {
studentData.password = hash;
Student_Info.update(studentData)
.then(student => {
res.json({
status: student.email + "updated"
});
})
.catch(err => {
res.send("error" + err);
});
});
} else {
res.json({
error: "No User Found"
});
}
})
.catch(err => {
res.send("error" + err);
});
});
解决方案
试试用compareSync
呢?
Student_Info.findOne({
where: {
email: req.body.email
}
})
.then(student => {
if (!student) throw new Error("No User Found")
// return true if old password equals new password
const validPassword = bcrypt.compareSync(req.body.password, student.password)
if (validPassword) throw new Error("Same Password")
studentData.password = bcrypt.hashSync(req.body.password, 10)
return student.update(studentData)
})
.then(student => {
res.json({
status: student.email + "updated"
});
})
.catch(err => {
res.send("error" + err);
});
推荐阅读
- javascript - 将数据从服务器发送到客户端
- r - 去除异常值线性回归
- javascript - 点击锚标签只会执行部分功能
- sql - SQL 按县显示州的最大收入并显示县
- sql - 如何找出每个阶段的第一次出现
- c# - 如何在 C# .net core 3.1 的 MVC 控制器中传递 json 变量
- python-3.x - TypeError:return_entry 接受 0 个位置参数,但给出了 1 个;反之亦然。没有参数就失败了
- html - 背景图像未显示全高
- bash - 使用 Bash 脚本并行运行多个 Google Apps Script clasp 命令
- vim - 将 f 键映射到符号并不总是有效