-
Delete the avatars on s3Project using node.js/Cloning Youtube 2020. 9. 8. 10:31
이제 파일이 local이 아니라 aws-s3에 저장이 된다. 하지만 내가 profile avatar를 바꿔도 aws-s3에서 삭제되지 않는다. 이렇게 되면 불필요한 avatar가 s3에 쌓이게 되어 용량을 차지하고 보안적인 측면에서도 좋지 않다. 그래서 user가 자신의 profile avatar를 편집하면 s3에서도 삭제하게끔 할 것이다.
middlewares.js
외부 module에서 사용할 수 있도록 s3를 export 해준다. userController.js에서 s3를 사용할 것이다.
userController.js
빨간색 박스가 기존에 있었던 postEditProfile에 추가된 코드다. 이 코드는 aws-s3에 있는 avatar를 삭제하는 기능을 한다.
s3.deleteObject()에는 삭제할 video 객체가 주어줘야 한다. 그 객체는 Bucket과 Key를 가지는데 Bucket는 업로드 된 파일이 있는 bucket의 이름이고 Key는 bucket 뒤에 있는 directory/fileName 이다. DB에 저장되어 있는 avatarUrl은 http로 시작되는 파일의 url의 전체 주소이기 때문에 regex로 나눠서 원하는 부분만 추려내야 한다.
s3에서 avatar를 삭제하는 부분은 반드시 if(file)로 묶어줘야 한다. 그렇지 않다면 user가 avatar를 수정하지 않았을 때, s3에 있는 avatar를 삭제하고 만다.
참고 자료
소스 코드
github.com/zpskek/wetube-v3/commit/bcd16bc4b45cd9e0e61f611a3076b739e59b3524
Fix the bug that deletes the avatar even though not editing avatar
'Project using node.js > Cloning Youtube' 카테고리의 다른 글
Building the app (0) 2020.09.09 MongoDB Atlas (0) 2020.09.08 Delete the video on s3 (0) 2020.09.08 Multer - s3 (0) 2020.09.07 AWS - S3 & IAM (0) 2020.09.07