android - Android:如何在 Firestore 中编写字符串数组列表
问题描述
我需要编写一个简单的集合,其中文档只包含一个字符串数组列表。
usersBlocked
-blockerID
- usersBlockedList
-userID1
-....
-userIDN
此时,如果文档已经以这种方式存在,我可以更新列表:(为了测试 porpouses,我手动编写了它)。
val reference = Firebase.firestore
.collection("usersBlocked")
.document(userIDBlocker)
reference.update("usersBlocked", FieldValue.arrayUnion(userIDToBlock))
.addOnSuccessListener { Logger.d("Blocked") }
.addOnFailureListener { Logger.d(it.localizedMessage) }
正如我所说,如果文档存在,则更新是正确的,但是当没有文档时...我收到此错误:
NOT_FOUND: No document to update: projects/xxxxxx/databases/(default)/documents/usersBlocked/2oLOYbG2z9gRC5VugchEP7ZPpy53
我认为显然不存在,但我不知道如何在文档中编写数组。
我看到了如何保存地图,但不是我需要的。
数据库结构:
解决方案
首先,您必须确认您当前的userid
. 像我放的那样放条件。它将检查 id 是否可用。如果 id 不可用。然后它将在您的 usersBlocked 处生成新文档,其中包含 uid 和存储数组。
val reference = Firebase.firestore
.collection("usersBlocked")
.document(userIDBlocker).get()
.addOnSuccessListener { documentSnapshot ->
if (documentSnapshot.exists()) {
reference.update("usersBlocked", FieldValue.arrayUnion(userIDToBlock))
} else {
val userdetail = HashMap<String, Any>()
var usersBlockedList = arrayListOf<String>()
usersBlockedList.add(userIDToBlock)
userdetail["usersBlocked"] = usersBlockedList
Firebase.firestore.collection("usersBlocked").document(userIDBlocker).set(userdetail)
.addOnSuccessListener { success ->
}
.addOnFailureListener { exception ->
Log.e("Data Failed", "To added because ${exception}")
}
}
}
.addOnFailureListener { exception ->
Log.e("Exception", "${exception}")
}
推荐阅读
- python - 如何使用 pyvmomi 创建虚拟机
- angular - 阵列上的Angular 8 Refresh组件在服务上更新
- mongodb - 排除MongoDB中的一些文档
- c# - 如何测试另一个国家的数据?
- javascript - jQuery .sort() 函数在 Safari 和 Firefox 中有效,但在 Chrome 中无效
- html - XPath 到
哪个没有直接分配的类
- android - I want to automatically play the next music?
- mysql - WordPress MySQL query: copy data from a table to another
- sql - Index Integer Substring of Varchar ID PostgreSQL
- java - 将内容从一个列表转移到另一个列表