Account Logic

minho·2022년 7월 13일
0

요청받은 email, phone이 데이터 베이스에 있는지 확인하는 방법

findUnique

findUnique는 User or null을 반환한다.

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { phone, email } = req.body;
  if (email) {
    const user = await client.user.findUnique({
      where: {
        email,
      },
    });
  }
  return res.status(200).end();
}
  • findUnique를 사용한다음 where를 사용해 email이 데이터베이스에 있는지 없는지를 알 수 있다.
  • 만약 emaild이 있다면 user를 반환할 것이다.
  • 없다면 user를 반환하지 않을 것이다.

create

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { phone, email } = req.body;
  let user;
  if (email) {
    user = await client.user.findUnique({
      where: {
        email,
      },
    });
    if (!user) {
      user = await client.user.create({
        data: {
          name: "Anonymous",
          email,
        },
      });
    }
    //console.log(user);
  }
  return res.status(200).end();
}

만약 findUnique를통해 user를 찾지 못했다면 User를 생성한다.
이때 create를 사용한다.

  • data객체를 만들때 name은 필수로 적어줘야 하는 값이다.
  • data객체에 name과 email을 넣어준다.

planet scale 확인

planet scale 연결 명령어

pscale connect [Database name] --port [port number]

보통 3306은 쓰고 있다?고 한다 그러므로 port번호를 다른번호로 정해서 사용하도록 한다.

planet scale에 연결했으면 데이터베이스에 없는 이메일로 로그인해본다.


위의 사진과 같이 email을 새로 만들었다고 나온다.
-> console.log(user);의 결과임

phone number

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { phone, email } = req.body;
  let user;
  if (email) {
    user = await client.user.findUnique({
      where: {
        email,
      },
    });
    if (!user) {
      console.log("user를 찾지 못했음");
      user = await client.user.create({
        data: {
          name: "Anonymous",
          email,
        },
      });
    }
    console.log(user);
  }
  if (phone) {
    user = await client.user.findUnique({
      where: {
        phone,
      },
    });
    if (!user) {
      console.log("user를 찾지 못했음");
      user = await client.user.create({
        data: {
          name: "Anonymous",
          phone,
        },
      });
    }
    console.log(user);
  }
  return res.status(200).end();
}

phone number도 email과 같이 해준다.
그러나 이렇게 하면 에러가 난다.
그 이유는 req.body로 받아오는 숫자는 문자열이기 때문이다. 그러므로 phone를 숫자로 바꿔줘야 한다.

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { phone, email } = req.body;
  let user;
  if (email) {
    user = await client.user.findUnique({
      where: {
        email,
      },
    });
    if (!user) {
      console.log("user를 찾지 못했음");
      user = await client.user.create({
        data: {
          name: "Anonymous",
          email,
        },
      });
    }
    console.log(user);
  }
  if (phone) {
    user = await client.user.findUnique({
      where: {
        phone: +phone,
      },
    });
    if (!user) {
      console.log("user를 찾지 못했음");
      user = await client.user.create({
        data: {
          name: "Anonymous",
          phone: +phone,
        },
      });
    }
    console.log(user);
  }
  return res.status(200).end();
}

문자열 앞에 +를 붙이면 순자로 변경한다.
반대로 숫자 뒤에 + ""를 하면 문자열로 변경된다.

profile
Live the way you think

0개의 댓글