Firestoreでは、トランザクションを使用して、ポストの好みやコメント機能を実装しています。私は、likes/commentsサブコレクションに新しいフィールドを追加し、投稿のカウンターを更新する必要があるので、トランザクションを使用します。また、好きな/コメント付き投稿コレクションに投稿IDを追加します。Firestore runTransaction()とオフライン作業
私はオフラインだと、このすべてがOKであるように私は私のポストを要求した場合に気づい:
val postDocRef = FirebaseUtil.postsColRef.document(postId)
postDocRef.get().addOnSuccessListener { doc ->
val post = doc.toObject(Post::class.java)
Timber.e(post.toString())
}
しかし、私は、トランザクション例外で同じことを行う場合にスローされます。
val postDocRef = FirebaseUtil.postsColRef.document(postId)
FirebaseUtil.firestore.runTransaction(Transaction.Function<Void> { transaction ->
val post = transaction.get(postDocRef).toObject(Post::class.java)
}
例外次のとおりです。
com.google.firebase.firestore.FirebaseFirestoreException:UNAVAILABLE
オフラインモードがトランザクションで機能しないのはなぜですか?オフラインでこの機能を実装することは可能ですか(サブコレクションのエントリを追加し、異なるオブジェクトのフィールドを更新する)ことは可能ですか?
トランザクションをcontinueWithTask()
コールチェーンに置き換える際の欠点は何ですか?