2017-11-02 5 views
0

Cloud Firestore Batched writes에 대한 문서에서 "사용자의 기기가 오프라인 일 때도 일괄 쓰기를 수행 할 수 있습니다."Cloud Firestore 일괄 쓰기가 오프라인 모드에서 작동하는 방법

텍스트가 "할 수있다"고하므로이 기능을 해제하거나 기본적으로 해제 할 수 있습니까? 클라우드 경우 FireStore 거래는 경우 키우면 오프라인 실패하고 난 일괄 내가 느낌을 얻을 같은

내가 OnCompleteListener에 결과를 확인해야 할 기록 싶습니다

batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> task) { 
     // offline/online?? 
    } 
}); 

나는 생각 Doc에는 이에 대한 설명이 포함되어야합니다.

답변

2

클라이언트에서 원자 읽기 - 수정 - 쓰기 작업을 수행 할 수 있도록 Firestore 트랜잭션이 존재합니다. 이를 보장하기 위해 고객은 온라인에 있어야합니다.

일괄 쓰기는 오프라인 상태에서도 사용자가 여러 가지 문서를 모두 또는 전혀 변경할 수 없도록 제한된 종류의 트랜잭션입니다.

오프라인 일 때 온라인으로 글을 쓸 필요가 없거나 쓰기를 원한다면 온라인 거래 여부를 확인하고 오프라인 일 경우 실패합니다. 당신은 거래에서 무엇이든 읽을 의무가 없습니다.

일괄 쓰기에 대한 OnCompleteListener의 결과를 확인하는 것이이 용도로 작동하지 않습니다. 쓰기가 서버에 성공적으로 적용된 후에 만 ​​호출되기 때문에 콜백에서 어떤 것도 방지 할 수 없습니다.

+0

감사합니다. Firebase 실시간 데이터베이스에서 마이 그 레이션했습니다. 거기에'updateChildren()'을 사용하여 10 개의 노드에 all-or-nothing을 수행했습니다. Cloud Firestore Transactions를 사용하여 제안 할 때 컬렉션/문서를 하나만 가져 가야하므로 10 개의 트랜잭션을 실행해야합니까 ?? – Erik

+1

일괄 쓰기는 updateChildren에 해당하는 Firestore입니다. 10 개의 업데이트를 단일 배치에 넣을 수 있으며 서버에 자동으로 적용됩니다. 귀하의 질문에 사용자가 온라인 상태가 아니면 사용자가이 작업을 진행하는 것을 원하지 않는다고 표시했습니다. 그렇다면 일괄 처리 된 쓰기 대신 트랜잭션을 사용하십시오. 두 방법 모두 한 번에 여러 문서를 조작 할 수 있습니다. –

+0

오케이 지금 거래가 10 가지 다른 문서를 사용할 수 있음을 알았습니다. 감사 – Erik

관련 문제