仅在Cloud Firestore中第一次交易成功后才能执行其他交易?

时间:2018-03-21 17:45:42

标签: java android firebase google-cloud-firestore

customerReference.document(customerName).set(customerDetails).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            customerReference.document(customerName).collection(firebaseUser.getUid())
                    .document(invoiceDate + " && " + timestampString).set(makeBillDetails)
                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                                openPdf();
                        }

所以现在我正在做的是将对象设置为文档,并在获得该事务的成功后,我正在做一些其他事务。这在线上工作时效果很好但是当交易发生在离线模式时,第一个交易将在本地完成,但是听众(成功或失败)不会被触发,所以现在如何进行第二次交易?

1 个答案:

答案 0 :(得分:1)

您在代码中执行的操作不称为事务。您只使用set()方法将对象添加到数据库中。

因此,当网络连接丢失时(用户设备上没有网络连接),onSuccess()onFailure()都不会被触发。这是Cloud Firestore中的行为,也始终位于Firebase Realtime Database。只有在Firebasee服务器上提交的写入才会被视为失败/成功。

Firestore为处理脱机数据提供此功能,但您需要使用addSnapshotListener才能处理此情况。