我可以在发送前检查用户是否已经在数据库中吗?(Mongoose和Next JS)

5ktev3wc  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(122)

我的程式码发生问题,即使使用者已经在数据库中,我还是要将使用者传送到数据库。在传送使用者到数据库之前,我如何检查使用者是否已经在数据库中(根据名称和年龄),以避免发生这个问题?以下是程式码:
index.js

async function handleSubmitCreateClient () {
                try {
                    const { data } = await api.post("/user", { name, age })
                    setUsers(users.concat(data.data))
                    setName ("")
                    setAge ("")
                    Toast ({
                        title: "Success!",
                        status: 'success',
                        duration: 9000,
                        isClosable: true,
                    })
                    setIsLoading(false);
                } catch (error) {
                    console.log(error);
                    console.log("Fail");
                    setIsLoading(false);
                }
            }

美国石油学会

case "POST":
      try {
        const { name, age } = req.body;
    
        if (!name && !age) throw "invalid data";
        const client = await Client.create({ name, age });
    
        res.status(201).json({success:true, data:client});
      } catch (error) {
        console.log(error);
        res.status(500).json({ success: false, error });
      }
      break;

谢谢你提前!我已经尝试了一些更改的代码,但没有成功,它仍然不检查用户。所以,我想知道最好的方式来执行此验证。
我已经尝试了一些不同的方法来插入验证,但没有一个工作...
我最接近答案的一个例子是这样的,我在index.js页面上插入了一个if条件,但是当我刷新页面时,它忘记了User已经发送了姓名和年龄**,最后再次将用户添加到数据库中:

if (users.some((user) => user.owner_of === owner_of && user.token_id === token_id))
xesrikrc

xesrikrc1#

首先检查用户是否存在。如果存在,则不继续POST。

case "POST":
      try {
        const { name, age } = req.body;
    
        if (!name && !age) throw "invalid data";

        const clientExists = await Client.find({ name });
        if (clientExists) {
          throw "User already exists";
        }

        const client = await Client.create({ name, age });
    
        res.status(201).json({success:true, data:client});
      } catch (error) {
        console.log(error);
        res.status(500).json({ success: false, error });
      }
      break;

相关问题