본문 바로가기
Frontend/Project(개인 기록용)

유저 인증 기능 (firebase등록정보 MongoDB에 저장)1-3

by Johnny_gon 2023. 6. 6.
728x90
반응형

 

 

이전에 등록된 user정보를 바탕으로 MongoDB에 axios통신으로 데이터를 보냅니다.

 

client 코드

 

body에 등록한 유저정보를 담아서 server에 보냅니다.

 
   //firebase에 저장 된 정보를 mongoDB에도 저장하기 위해
   //body에 담아서 server로 보내줍니다.
   let body = {
     displayName: createdUser.user.multiFactor.user.displayName,
     email: createdUser.user.multiFactor.user.email,
     uid: createdUser.user.multiFactor.user.uid,
   
   // console.log(body);
   axios.post("/api/user/register", body).then((res) => {
     if (res.data.success) {
       //회원가입 성공시 로그인창 이동
       navigate("/login");
     } else {
       //회원가입 실패시 alert창 띄움
       return alert("회원가입 실패했어요..");
     }
   })
  };
 

 

 

 

server 코드

Router폴더에서 user파일을 따로 만들어서 작업 진행

 
   router.post("/register", (req, res) => {
     //클라쪽에서 요청보낸 것들(tmep)유저 displayName,email,uid,photoUR
     // console.log(tmep);
     let tmep = req.body;
     //클라쪽에서 tmep 데이터 받아서 mongoDB user에 저장 작업
     Counter.findOne({ name: "counter" })
       .then((doc) => {
         tmep.userNum = doc.userNum;
      //객채 생성후 요청받은 데이터 넣어주고
      const userData = new User(req.body);
 
      userData.save().then(() => {
        //userData 저장 후 counter 1씩 증가시킴
        Counter.updateOne({ name: "counter" }, { $inc: { userNum: 1 } }).then(
          (doc) => {
            res.status(200).json({ success: true });
          }
        );
      });
    })
    .catch((err) => {
      console.log(err);
      res.status(400).json({ success: false });
    });
  });
 
   module.exports = router;
 

 

 

 

client에서 요청 보낸 틀에 맞게 user스키마 구현.

user가 회원가입할 때마다 userNum 부여와 동시에 1씩 증가시키기 위해 Counter스키마로 가서 userNum 추가


  const mongoose = require("mongoose");

  const userSchema = new mongoose.Schema(
    {
      userNum: Number,
      email: String,
      displayName: String,
      uid: String,
    },
    { collection: "users" }
  );
  const User = mongoose.model("User", userSchema);
 
  module.exports = { User };
 

 

 

 

mongoDB에 가서  userNum이 없기 때문에 userNum만들고 초기값 1넣어줌.

로그인 후 몽고DB에 가보면 저장된 데이터를 확인할 수 있습니다.

 

728x90
반응형