【发布时间】:2021-06-07 14:47:57
【问题描述】:
我有一个单位的集合,每个单位都有很多字段。其中一个字段是名为 Settings 的地图。设置为
我的代码:
suspend fun updateData(unitID: String): Boolean = suspendCoroutine { cont ->
val firestore = FirebaseFirestore.getInstance()
firestore.collection("Units").document(unitID).get().addOnCompleteListener { it1 ->
if (it1.isSuccessful) {
val settings = it1.result.get("Settings") as? HashMap<String, Any>
if (settings != null) {
settings["C"] = "World"
val map = hashMapOf<String, Any>()
map["Settings"] = settings
firestore.collection("Units").document(unitID).update(map).addOnCompleteListener { it2->
if (it2.isSuccessful) cont.resume(true)
else cont.resumeWithException(it2.exception!!)
}
}
}
else cont.resumeWithException(it1.exception!!)
}
}
我在做什么?我正在获取地图,更新值并将其设置回来。 我的问题是,这是正确的方法吗,我可以在不先读取数据的情况下设置值吗?
【问题讨论】:
-
请编辑您的问题并将您的数据库结构添加为屏幕截图。除此之外,您的参考资料中
unitID的值是多少?你有任何错误吗? -
是的,您可以在获取数据后不读取任何数据进行更新。如果您传递了正确的 UID,没有问题。@Dim
标签: android kotlin google-cloud-firestore