我正在创建一个应用程序,用户可以在其中上传照片并为其添加标签,然后将他们使用的标签添加到该用户的兴趣列表中。 我正在从实时数据库过渡到云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()
)
}