我使用事务在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()
替代交易链接有什么缺点?