android - 在 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 开发的新手,因此我们将不胜感激。
解决方案
在 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 处创建。
推荐阅读
- python - 如何在 CSV 文件中维护多个列表以及如何使用 python 读取它
- datatables - 在表加载之前触发的 DataTable 初始化事件
- html - 如何使用 svg 在滚动条上绘制文字?
- angular - 从角度 http.get 返回正确的对象与承诺
- influxdb - kapacitor批处理中的派生节点
- arrays - Yii2 ArrayHelper 显示父类
- javascript - 如何使用 node 和 express 在 shopify 应用程序前端获取当前商店详细信息
- php - 如果数据是阿拉伯语,则在 ajax 函数中获取字母“a”
- amazon-s3 - QNAP 备份到 s3
- r - 如何修改ggplot2中的堆积条形图使其发散