Swift Firebase usando un índice no especificado
Entonces, tengo una aplicación de chat y mis datos están estructurados así
chats : {
chat12345 : {
members : {
user123 : true,
user456 : true,
}
}
}
users : {
user123 : {
chats : {
chat12345 : true
}
}
}
Entonces, cuando quiero obtener una lista de los chats del usuario, simplemente uso:
let ref = dbref.child("users").child("user123").child("chats")
ref.observe(.childAdded, with: { (snapshot) -> Void in
let chatRef = dbref.child("chats").child(snapshot.key)
chatRef.observeSingleEvent(of: .value, with: { (chatSnapshot) in
//I now have the chat object
})
})
Como puede ver arriba, puedo consultar cada ID de chat para obtener el objeto de chat de Firebase con éxito.
Pero también necesito observar cambios en los chats de los que soy miembro, por ejemplo, si el título del chat, la imagen u otras propiedades cambian.
Entonces cuando intento lo siguiente:
let queryRef = chatRef.queryOrdered(byChild: "members/user123").queryEqual(toValue: true)
queryRef.observe(.childChanged, with: { (snapshot) -> Void in
})
Esto técnicamente funciona, pero la consola genera lo siguiente:
Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding ".indexOn": "members/user123" at /chats to your security rules for better performance.
¿Cómo modifico las reglas de seguridad o mi consulta para observar los cambios en los chats de los que soy miembro?
Aquí están mis reglas de seguridad en este momento:
"chats": {
".read": "auth != null",
".write": "auth != null",
"$chatId" : {
"members": {
".indexOn": ".value"
}
}
},