我一直在纠结应该用什么逻辑来处理这个问题。我想让用户更新他的信息,但是我遇到了一个问题。
**如果用户希望更改其电子邮件,但保留其用户名,该怎么办?**在这种情况下,因为其用户名已存在于后端中。反之亦然
比如说,我有这个数据
"username": "test1",
"email": "test1@gmail.com"
用户只想更新他的用户名并保存他的默认电子邮件。
"username":"test1updated",
"email":"test1@gmail.com"
因为我用的是一个验证,
const userExist = await User.findOne({username})
const emailExist = await User.findOne({email})
if(userExist){
res.status(400).json("User Already Existing...")
}else if(emailExist){
res.status(400).json("Email Already Exists...")
}else{
try {
const newUser = new User({
username: req.body.username,
email: req.body.email,
studentid: req.body.studentid,
password: CryptoJS.AES.encrypt(
req.body.password,
'secret_key',
).toString(),
});
const savedUser = await newUser.save()
res.status(200).json(savedUser)
} catch (error) {
return res.status(400).json("Error Login")
}
}
这意味着它不会保存,因为它的存在和我的mongoose只接受独特的输入,我怎么能允许用户更新他选择的信息,像更新用户名只不改变电子邮件?
有些人可能会建议,只需删除电子邮件的验证,但我也希望同样的功能,以电子邮件。
还是我应该让用户名不可更改?因为它是我的登录信息?
2条答案
按热度按时间juud5qan1#
假设一个用户有一个排序的唯一标识符,它是数据库中的一个自动增量值或其他ID。
可以更新
userExist
以查找唯一id与当前用户id不匹配的用户名,从而有效地将当前用户从检查查询中删除。另一种方法是在用户更改旧信息(UI上的隐藏元素或带有用户id的数据库查询)之前保存用户的旧信息,然后检查哪些内容已更改,哪些内容未更改。
第一个选择会更好。
vnzz0bqm2#
我想你知道什么是当前的用户名和电子邮件。在保存检查用户名或电子邮件是否被更改,如果只是更改,然后尝试做验证和保存。如果数据甚至没有改变,没有意义的验证和保存它。