我想将集合添加到Firestore数据库,如下图所示:
here
我想在每次调用函数时在数组列表中添加一个符号。
fun addsymbol(){
val arrayList= arrayListOf<String>()
arrayList.add(Coin.Coin_Info?.symbol!!)
val postHashMap = hashMapOf<String, Any>()
postHashMap.put("symbols",arrayList)
Firestore.collection("Users").document("User1").set(postHashMap, SetOptions.merge())
.addOnCompleteListener { task->
if(task.isSuccessful){
System.out.println("Succes ")
}
}.addOnFailureListener {
System.out.println( it.message.toString())
}
}
函数工作,但它不是添加符号到数组列表,它是更新数组列表。我该如何解决它?
2条答案
按热度按时间pjngdqdw1#
添加新符号时不需要读取文档中的数组,只需将FieldValue#arrayUnion()作为参数传递给update方法,如下所示:
我还建议附加一个完整的监听器,看看是否出了问题。
ugmeyewa2#
问题在于,每次调用
addsymbol
函数时,您都在创建arrayList
的新示例,然后向其添加符号。但是,您没有从Firestore数据库中检索现有符号数组并向其追加新符号。要解决此问题,您需要检索现有符号数组,向其追加新符号,然后使用新阵列更新Firestore数据库。请尝试以下操作: