mongodb 如果用户没有更改其用户名,我如何接受用户输入?

mefy6pfw  于 2022-11-03  发布在  Go
关注(0)|答案(2)|浏览(180)

我一直在纠结应该用什么逻辑来处理这个问题。我想让用户更新他的信息,但是我遇到了一个问题。

**如果用户希望更改其电子邮件,但保留其用户名,该怎么办?**在这种情况下,因为其用户名已存在于后端中。反之亦然

比如说,我有这个数据

"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只接受独特的输入,我怎么能允许用户更新他选择的信息,像更新用户名只不改变电子邮件?
有些人可能会建议,只需删除电子邮件的验证,但我也希望同样的功能,以电子邮件。

还是我应该让用户名不可更改?因为它是我的登录信息?

juud5qan

juud5qan1#

假设一个用户有一个排序的唯一标识符,它是数据库中的一个自动增量值或其他ID。
可以更新userExist以查找唯一id与当前用户id不匹配的用户名,从而有效地将当前用户从检查查询中删除。
另一种方法是在用户更改旧信息(UI上的隐藏元素或带有用户id的数据库查询)之前保存用户的旧信息,然后检查哪些内容已更改,哪些内容未更改。
第一个选择会更好。

vnzz0bqm

vnzz0bqm2#

我想你知道什么是当前的用户名和电子邮件。在保存检查用户名或电子邮件是否被更改,如果只是更改,然后尝试做验证和保存。如果数据甚至没有改变,没有意义的验证和保存它。

相关问题