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 错误
没有意义
我找到了答案。感谢 RogelioMonter
并 Alex 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())
}
}
我有一个集合,我想从这个集合中删除 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”
没有意义
我找到了答案。感谢 RogelioMonter 并 Alex 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())
}
}