인프런 커뮤니티 질문&답변

vadain2000님의 프로필 이미지
vadain2000

작성한 질문수

Flutter로 SNS 앱 만들기

Firestore 에 회원 정보 저장

섹션2 firestore에 회원정보저장에서

작성

·

41

0

 

섹션2 firestore에 회원정보저장에서

9:14

UploadTask uploadTask = ref.putData(profileImage);

downloadURL = await snapshot.ref.getDownloadURL();

저장이 완료전에 실행하는것을 에러방지위해 await를 쓰신다고 하셨는데. 타입까지 바뀌나요.?

UploadTask uploadTask = await ref.putData(profileImage);

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

질문 주신 내용은 Flutter와 Firebase를 사용하는 과정에서의 비동기 작업 처리와 관련된 것으로 보입니다. Firestore에 데이터를 저장하고, 저장이 완료되기를 기다려야 할 때 await 키워드를 사용하는 것이 맞습니다. await는 비동기 함수의 결과를 기다리는데 사용되며, 비동기 함수는 Future 타입을 반환합니다. 따라서, await 키워드를 사용할 때 해당 변수의 타입은 비동기 함수가 완료된 후의 결과 타입이 됩니다.

예를 들어, ref.putData(profileImage)Future<UploadTask>를 반환한다면, await ref.putData(profileImage)를 사용하면 UploadTask 타입의 결과를 바로 받게 됩니다. 즉, await 사용 여부에 따라 변수의 타입이 바뀔 수 있습니다.

Firebase Storage 작업에서 UploadTask는 파일 업로드 작업을 나타내는 타입입니다. 이 작업을 기다린 후, 업로드가 완료되었을 때 결과를 처리하기 위해 await를 사용할 경우, UploadTask 대신 업로드 작업의 결과인 TaskSnapshot와 같은 다른 타입을 다루게 될 수 있습니다. 하지만 실제 코드 구현에서 반환 타입이 어떻게 바뀌는지는 Firebase 라이브러리의 문서를 참고하여, 해당 메서드의 반환 타입을 확인해야 합니다.

질문하신 코드의 문맥에서는, await를 사용하여 비동기 업로드 작업이 완료되기를 기다리는 것이 맞으나, 정확한 타입 변경은 ref.putData 메서드의 문서를 확인해야 합니다. Firebase 문서에서는 await를 사용하기 전후로 어떤 타입의 객체를 사용해야 하는지를 명시해줍니다.

제공된 정보 내에서 직접적으로 Flutter, Firebase Firestore, 또는 ref.putData 메서드에 대한 설명은 없으므로, 상세한 구현이나 타입 변경에 대한 더 구체적인 설명은 Firebase Storage 및 Flutter 관련 문서를 참고해주시기 바랍니다.

vadain2000님의 프로필 이미지
vadain2000

작성한 질문수

질문하기