Cloud Firestore:添加或更新阵列

时间:2019-06-18 04:09:06

标签: android firebase google-cloud-firestore

我正在创建一个应用程序,用户可以在其中上传照片并为其添加标签,然后将他们使用的标签添加到该用户的兴趣列表中。 我正在从实时数据库过渡到云Firestore,并且遇到了一些问题。

我想将所有这些标签存储在每个用户的文档内部的数组中。每当用户上传照片时,这些标签都应添加到该数组中。

我正在使用update方法,因为我不想覆盖列表,但是似乎根本没有创建数据。可能是因为对于新用户而言,该列表实际上并不存在吗? 如果用户是第一次添加任何兴趣,我就需要创建文档和数组的功能,或者如果数组已经存在,则只需更新列表并添加项目。

此外,标签还会添加到应用中所有标签的完整列表中。为此,我尝试使用set方法,但是即使我添加了SetOptions.merge()

,列表也被完全覆盖了。
val db = FirebaseFirestore.getInstance()

val userInterestsDoc = db.collection("interests").document(currentUser.uid)
val allTagsListDoc = db.collection("all_tags").document("all_tags")

for (tag in imageTagsList) {
 userInterestsDoc.update("interests_list", FieldValue.arrayUnion(tag))
                       .addOnSuccessListener {
                        allTagsListDoc.set(
                            mapOf(
                                "all_tags_list" to arrayListOf(tag)
                            ), SetOptions.merge()
                        )
            }

0 个答案:

没有答案