首页 > 解决方案 > 在 Android Firestore 的批处理操作中通过 set() 方法增加一个字段

问题描述

我有一个集合,其中包含只有一个名为“likeCount”的字段的文档。当有人从我的 android 应用程序中点击“like”按钮时,我想增加它。问题是,当一个帖子第一次被点赞时,我想为那个帖子创建一个新文档。如果它已经被喜欢,一个简单的增量就足够了。除此之外,我正在通过批处理操作执行此操作,因为我必须在执行此操作时更新另一个集合

在我相应的 iOS 应用程序中,我编写了以下代码来完成此操作:

batch.setData(
[WallPostPublicFields.likeCount.rawValue: FieldValue.increment(1)], 
forDocument: referance(to:.wall_post_public).document(postId),
merge: true
)

任何人都可以建议在 kotlin 中做同样的事情吗?因为在 kotlin 的 batch.set() 方法中只接受一个文档引用、数据和设置选项作为参数。

我是 kotlin 和 Android 开发的新手,因此我们将不胜感激。

标签: androidkotlingoogle-cloud-firestore

解决方案


在 Kotlin 中,只需使用以下代码行:

val batch = db.batch()
val postId = db.collection("posts").document().id
val postIdRef = db.collection("posts").document(postId) 
batch.set(postIdRef, "likeCount", 0);
batch.update(postIdRef, "likeCount", FieldValue.increment(1))
batch.commit().addOnCompleteListener {
    //Your logic
}

如果likeCount不存在,它将在第一个like 处创建。


推荐阅读