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
반응형
'Frontend > Project(개인 기록용)' 카테고리의 다른 글
Redux - Redux Toolkit 작업 (0) | 2023.06.06 |
---|---|
기존 사용자 로그인 작업 (0) | 2023.06.06 |
유저 인증 기능 (firebase)1-2 (0) | 2023.06.06 |
유저 인증 기능 1-1 (0) | 2023.06.05 |
이미지 저장(네이버 클라우드)하기 (0) | 2023.06.05 |