es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo creo un índice de Cloud Firestore en Flutter?

Hola a todos, quiero crear un índice de Cloud Firestore para mi proyecto de Firestore y no sé qué flujo debería cargar en el campo de índice porque obtengo un error en la aplicación que dice:

W/Firestore(17047): (24.0.0) [Firestore]: Listen for Query(target=Query(chatRooms where participants.null == true order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
W/Firestore(17047): (24.0.0) [Firestore]: Listen for Query(target=Query(users/2e5yO3ZYKDWprC8dVi1bzlY9a0Q2 order by __name__);

Y estos son mis flujos:

QuerySnapshot snapshot = await _fireStore
        .collection("chatRooms")
        .where("participants.${userModel.uid}", isEqualTo: true)
        .where("participants.${targetUser.uid}", isEqualTo: true)
        .get();
StreamBuilder(
                    stream: _fireStore
                        .collection('chatRooms')
                        .doc(chatRoom.chatRoomId)
                        .collection('messages')
                        .orderBy('createdon', descending: true)
                        .snapshots(),

No puedo publicar una imagen porque necesito al menos 10 reputaciones.

Reglas:

Reglas

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error es causado por la falta de permisos o permisos insuficientes para las consultas de Firestore. Según el mensaje de error, parece que las consultas están apuntando a los siguientes campos: “participants.null” y “users/2e5yO3ZYKDWprC8dVi1bzlY9a0Q2”.

    Para solucionar el problema, debes actualizar las reglas de seguridad para tu proyecto de Firestore para permitir el acceso de lectura y escritura a los campos mencionados. Puedes hacer esto agregando las siguientes reglas:

    match /chatRooms/{chatRoom} {
      allow read, write: if request.auth != null;
      // Agrega esta regla para permitir acceso de lectura a campos con valores nulos
      allow read: if request.auth != null && resource.data.participants == null;
    }
    
    match /users/{userId} {
      allow read, write: if request.auth != null;
    }
    

    Ten en cuenta que estas reglas otorgan acceso de lectura y escritura a todos los usuarios autenticados con tu aplicación. Es posible que desees personalizar las reglas para que se ajusten a tu caso de uso específico y solo otorguen acceso a usuarios autorizados.

    Una vez que hayas actualizado las reglas, intenta ejecutar las consultas nuevamente y verifica si el error persiste.

Comments are closed.