Firestore 从嵌套地图 kotlin 中删除元素

Firestore Delete elements from a nested map kotlin

我有一个集合,我想从这个集合中删除 2 个文档 Paradas collection 并将其从嵌套地图中删除 Nested map 就像在 SQL 中一样,当您从 table 中删除它时,也会从其他地方删除它。

我试过了

fun deleteNestedParadas(lista: ArrayList<Parada> )  {
            try {
               val refrutas=Firebase.firestore.collection("rutas")
                refrutas.get().addOnSuccessListener { taskruta ->
                    for (ruta in taskruta.documents) {
                        val rutaa = ruta.toObject(Ruta::class.java)
                        if (rutaa != null) {
                            for (parada in lista) {
                                if (rutaa.paradasruta!!.contains(parada.id)) {
                                    refrutas.document(rutaa.id)
                                        .update("paradasruta",{parada.id to delete()})
                                        .addOnSuccessListener {
                                            Log.e("DeleteNestedParada",
                                                "Se han borrado las paradas correctamente")
                                        }
                                        .addOnFailureListener {
                                            Log.e("DeleteNestedParada", it.message.toString())
                                        }
                                }
                            }
                        }
                    }

                }
        } catch (e: Exception){
            Log.e("Nested Collection", e.message.toString())
        }
    }

编辑: 出现的错误是这样的: 执行代码后,整个地图变为:“arity:0” 并出现此 android 错误

没有意义

我找到了答案。感谢 RogelioMonterAlex Mamo 寻求您的帮助。 之前看过一些帖子,比如如何做,但没有用,我不是简单地传递 mapOf 来更新,现在可以了。

fun deleteNestedParadas(lista: ArrayList<Parada> )  {
        try {
           val refrutas=Firebase.firestore.collection("rutas")
            refrutas.get().addOnSuccessListener { taskruta ->
                for (ruta in taskruta.documents) {
                    val rutaa = ruta.toObject(Ruta::class.java)
                    if (rutaa != null) {
                        for (parada in lista) {
                            if (rutaa.paradasruta!!.contains(parada.id)) {
                                refrutas.document(rutaa.id)
                                    .update("paradasruta",mapOf{parada.id to FieldValue.delete()})
                                    .addOnSuccessListener {
                                        Log.e("DeleteNestedParada",
                                            "Se han borrado las paradas correctamente")
                                    }
                                    .addOnFailureListener {
                                        Log.e("DeleteNestedParada", it.message.toString())
                                    }
                            }
                        }
                    }
                }

            }
    } catch (e: Exception){
        Log.e("Nested Collection", e.message.toString())
    }
}