Las reglas basadas en consultas con auth.uid no funcionan
Tengo la siguiente estructura:
events
-LEe7X118dkcH2JhJRe
description: "Testdescr"
eventTasks
participants
0zlwpSlCazNGjOyMi95h8awshrG2
lastLogin: 1528641494535
userKey: "0zlwpSlCazNGjOyMi95h8awshrG2"
username: "User1"
6LnYKxRu2SWUrxwIzId8dDpOrl02
lastLogin: 152856590172
userKey: "6LnYKxRu2SWUrxwIzId8dDpOrl02"
username: "User2"
Quiero consultar todos los eventos en los que participa un usuario (como un filtro). Mi código Java es:
mDatabaseReference = FirebaseDatabase.getInstance().getReference("event");
mDatabaseReference.orderByChild("participants/"+userId+"/userKey").equalTo(userId).addChildEventListener [...]
Esto funciona de maravilla: solo recibo los eventos correctos.
Ahora quiero crear reglas basadas en consultas en el lado del servidor https: //firebase.google.com/docs/database/security/securing-dat). Entonces creé una regla de lectura como:
".read": "query.orderByChild == 'participants/'+auth.uid+'/userKey' && query.equalTo == auth.uid"
Problem: no puedo guardar esa regla. Firebase me da el error: "Expresión inválida ==: el operando derecho debe ser un orden o literal de cadena cuando se compara con un orden". ¿Por qué no es posible usar "query.orderByChild" en combinación con auth.uid?
¿Qué estoy haciendo mal
EDITA: Aquí están mis reglas completas:
{
"rules": {
".write": true,
"event":{
".read": "query.orderByChild == 'participants/'+auth.uid+'/userKey' && query.equalTo == auth.uid"
}
}
}