[TIL] 210713

2K1·2021년 7월 15일
0

TIL

목록 보기
27/31
post-thumbnail

어제 업로드한 이미지를 끝냈고 오늘은 수정과 삭제기능을 구현했다.

유저 정보를 프론트에 보내고 프론트에서 나타내주고

// 프로필 수정 정보 불러오기
router.get('/', (req, res) => {
  const { userId } = res.locals
  User.findById( userId ).exec()
  .then((user) => {
    res.json({ user })
  })
});

📂 파일 수정 (이미지 수정&삭제)

S3에서 업로드된 파일을 삭제할려면 S3.deleteObject를 쓰면 된다. key는 어제 이미지 업로드를 할때같이 넣어뒀기 때문에 해당 유저아이디의 정보를 불러와서 profileImageKey를 넣어주면 삭제된다. 그리고 수정할 이미지로 갈아끼워주면 수정이 된다.

// 프로필 수정
router.put("/", upload.single("image"), async (req, res) => {
try{
  const { userId } = res.locals
  const { nickname, password } = req.body;

if (!req.file) {	// 수정할 이미지가 없으면 나머지만 업데이트
  await User.findByIdAndUpdate( userId, {$set: {
    nickname : nickname,
    password : password,
  }}).exec()

} else {
  userInfo = await User.findOne({ _id: userId });
  
  const key = userInfo["profileImageKey"]; //이미지 키값을 가지고와서
  S3.deleteObject({		//이미지 삭제
    Bucket: '', 
    Key: key
  }, (err, data) => {
    if (err) { throw err; }
  })
  const newprofileImage = req.file.location;	//새로운 정보 업데이트
  const newprofileImageKey = req.file.key;
  await User.findByIdAndUpdate( userId, {$set: {
    nickname : newnickname,
    password : newpassword,
    profileImage : newprofileImage,
    profileImageKey : newprofileImageKey,
  }}).exec()


  res.status(200).send({ message: "수정이 완료되었습니다." })
// 수정완료후 토큰 재발급 or 토큰제거후 로그인화면 리다이렉트후 다시 로그인
}}catch(err){
console.log(err)
res.status(400).send({
  errorMessage: "수정 양식이 올바르지 않습니다."
})
}

});
profile
📌dev_log

0개의 댓글