기업협업중에 구글드라이브에 파일업로드 구현을 할일이 생겼다.
const uploadFileGoogle = asyncErrorHandler(async (req, res) => {
const [filesObj] = req.files;
await uploadFileService.uploadFileGoogle(filesObj);
return res.status(201).json({ message: "SUCCESS_UPLOAD_FILE" });
});
이렇게 만들었는데 하나만 올라가고 여러갠 안되더라
고민후 간단하게 생각했다, 그냥 갯수만큼 돌리면되는거아닌가
const uploadFileGoogle = asyncErrorHandler(async (req, res) => {
const filesObjs = req.files;
const uploads = filesObjs.map(async (filesObj) => {
await uploadFileService.uploadFileGoogle(filesObj);
});
return res
.status(201)
.json({ message: `${filesObjs.length}개 파일 업로드 성공!` });
});
그래서 맵으로 돌려버렸다.
1~3개정도는 괜찮았는데 5개 넘어가기 시작하니까 파일이 짤리기시작했다, 아맞다 비동기
그래서 약속시켜줌
const uploadFileGoogle = asyncErrorHandler(async (req, res) => {
const filesObjs = req.files;
const uploads = filesObjs.map(async (filesObj) => {
await uploadFileService.uploadFileGoogle(filesObj);
});
await promise.all(uploads);
return res
.status(201)
.json({ message: `${filesObjs.length}개 파일 업로드 성공!` });
});
잘 올라간다.