Firebase / Cloud Firestore / Настройка правил (чтение, запись, обновление, удаление) - PullRequest
0 голосов
/ 29 октября 2019

У меня проблемы с настройкой правил облачного хранилища файлов.

Я пытаюсь получить доступ к полю внутри документа, внутри коллекции ... Как это

 Future<void> fetchAndSetProducts([bool filterByUser = false]) async {
    final filterString = filterByUser
        ? Firestore.instance.collection('products').getDocuments()
        : Firestore.instance
            .collection('products')
            .where('creatorId', isEqualTo: userId)
            .getDocuments();
    try {
      QuerySnapshot prodSnap = await filterString;

      if (prodSnap == null) {
        return;
      }

'creatorId' - это поле в базе данных / products / {productId}

Я хочу различать пользователей и разрешать им только обновлять и удалять файлы, созданные в базе данных / products /. .., но я также хочу, чтобы они могли просматривать все документы внутри /products/...

bool, который я настроил для fetchAndSetProducts, - это то, что я надеюсь использовать для фильтрации некоторых изинформационное приложение, например, позволяющее использовать только для просмотра определенные продукты (те, которые содержат их userId). Я не уверен, что мне также нужно настроить индексирование для «продуктов», но я уже сделал это на всякий случай.

Итак, я хочу заблокировать все файлы, которые не были созданыuser.

Я думал, что это будет что-то вроде этого:

service cloud.firestore {
  match /databases/{database}/documents {
    match /products/{productId}/documents{
    allow read: if resource.data.creatorId == request.auth.uid;
    }
  }
}

buuut, который не работает, а также мой код на стороне приложения для фильтрации по пользователю ..

1 Ответ

1 голос
/ 30 октября 2019

Если вы хотите сопоставить все документы в коллекции продуктов, это будет выглядеть следующим образом:

service cloud.firestore {
  match /databases/{database}/documents {
    match /products/{productId} {
      allow read: if resource.data.creatorId == request.auth.uid;
    }
  }
}

Обратите внимание, что я удалил "документы" из конца второго совпадения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...