Firebase Запрос и правила - PullRequest
       48

Firebase Запрос и правила

0 голосов
/ 27 сентября 2019

Это кажется довольно простой проблемой, я думаю, что просто смотрю на это слишком долго.Я пытаюсь запросить историю транзакций в моей базе данных, но я только хочу, чтобы пользователи могли читать документы транзакций, с которыми они связаны.Я знаю, что ограничения запросов должны соответствовать ограничениям правил, и, похоже, мои.Может кто-нибудь найти здесь что-то не так?

Правила Firebase

    match /transaction-history/{transactionId}{
        allow read: if isPurchaserOrReciever(getTransaction(transactionId));
    }
    function isPurchaserOrReciever(transaction) {
        return transaction.purchaserId == request.auth.uid || transaction.recieverId == request.auth.uid;
    }
    function getTransaction(transactionId) {
        return get(/databases/$(database)/documents/transaction-history/$(transactionId)).data;
    }

Запрос к базе данных в моем приложении.

await firestore
        .collection('transaction-history')
        .where('purchaserId', isEqualTo: myId)
        .getDocuments()).documents;

1 Ответ

0 голосов
/ 28 сентября 2019

Я все еще не уверен, почему мой предыдущий запрос не работал.Проводя больше исследований, я нашел способ упростить запрос, и это не приводит к ошибкам.Мне все еще интересно, может ли кто-нибудь сказать мне, что было не так с моими предыдущими правилами или запросом.

    match /purchase-logs/{purchaseId}{
        allow read: if resource.data.userId == request.auth.uid;
    }

    match /transaction-history/{transactionId}{
        allow read: if resource.data.purchaserId == request.auth.uid || resource.data.recieverId == request.auth.uid;
    }
...