【问题标题】:Is there a way to set and merge without creating a map for just 1 value有没有一种方法可以设置和合并而无需为仅 1 个值创建地图
【发布时间】:2020-08-25 12:34:22
【问题描述】:

我打算为我的用户再增加一个价值

docRef.document(FirebaseAuth.getInstance().currentUser!!.uid)
    .set("hasShop", SetOptions.merge())

现在,我想说这个hasShop值应该是真的,但我不想这样做

val map = hashMapOf<String,Any>
map["hasShop"] = true
docRef.document(FirebaseAuth.getInstance().currentUser!!.uid)
    .set(map, SetOptions.merge())

有没有更好的方法来做到这一点?

 docRef.document(FirebaseAuth.getInstance().currentUser!!.uid)
    .set("hasShop" {true} , SetOptions.merge())

【问题讨论】:

  • 您是否尝试使用更新而不是设置?
  • 如果字段不存在,更新是否会创建该字段?我需要在创建地图之前做同样的事情吗?
  • 首先,如果文档不存在,请尝试使用updateonFailure 中添加set 方法
  • 问题是这个字段永远不会更新,只会创建一次
  • 能否详细说明

标签: android firebase kotlin google-cloud-firestore


【解决方案1】:

您可以使用update() 为现有文档设置值。

 docRef.document(FirebaseAuth.getInstance().currentUser!!.uid)
    .update("hasShop", true)

【讨论】:

  • Doug 的问题是这个 如果还没有文档,更新将会失败。这就是为什么我使用 set 和 merge,因为我还没有那个字段
  • 我认为您误解了合并参数。如果整个文档尚不存在,则只需要 merge=true 。您可以对已存在的文档中不存在的字段使用更新。
猜你喜欢
  • 2021-06-16
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
相关资源
最近更新 更多