2017-02-21 12 views
2

내 안드로이드 애플 리케이션에서 인터넷 연결이 끊어진 경우와 같은 문제를 피하기 위해 동시에 데이터베이스의 여러 위치에 데이터를 업로드하기 위해 클라이언트 측 팬 아웃을 사용하고 있습니다. Firebase 블로그의 예제 코드는 다음과 같습니다.데이터베이스와 스토리지에 동시에 Firebase에 업로드

Map updatedUser = new HashMap(); 
newPost.put("name", "Shannon"); 
newPost.put("username": "shannonrules"); 

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/"); 

Map fanoutObject = new HashMap(); 
fanoutObject.put("https://stackoverflow.com/users/1", updatedUser); 
fanoutObject.put("/usersWhoAreCool/1", updatedUser); 
fanoutObject.put("/usersToGiveFreeStuffTo/1", updatedUser); 

ref.updateChildren(fanoutObject); // atomic updating goodness 

그러나 이제 해당 데이터와 함께 이미지 파일을 저장소에 업로드하고 싶습니다. 동시에 그렇게 할 수 있습니까?

+0

Cedric이 대답 했으므로 한 번의 작업으로 여러 Firebase 기능에 쓸 수있는 방법이 없습니다. –

답변

2

Firebase 데이터베이스 및 스토리지에 대한 호출을 동기화 할 수 있다고 생각하지 않습니다. 설명서에는 어디에도 언급되어 있지 않습니다.

그냥 알다시피 : Firebase는 연결이 끊어져서 보낼 수없는 경우 updateChildren()에 의해 만들어진 모든 요청을 캐시에 저장합니다. 사용자가 다시 연결하면, Firebase는 저장된 모든 순서대로 저장된 모든 요청을 발송합니다.

0

동시에을 수행하는 한 가지 방법은 먼저 저장소에서 파일 경로를 확인한 다음 업로드를 시작한 다음 해당 파일 경로를 사용하여 데이터베이스를 업데이트하는 것입니다. 그것은 당신만큼 좋은 것입니다.

그러나 대개의 경우 저장소 버킷의 경로 대신 업로드 된 파일의 "다운로드 URL"을 데이터베이스에 저장하려고합니다. 이렇게하면 클라이언트가 다운로드 URL을 먼저 "검색"하지 않고도 콘텐츠로 바로 이동할 수 있습니다. 이 경우 먼저 저장소 업로드가 완료 될 때까지 기다렸다가 UploadTask에서 다운로드 URL을 가져온 다음 해당 문자열로 데이터베이스를 업데이트해야합니다. 업로드가 완료되면 의 앞에을 알 수 없습니다.

관련 문제