Правила безопасности firestore: запретить обновление профиля, но разрешить обновление рейтинга - PullRequest
0 голосов
/ 12 июля 2020

У меня есть коллекция под названием «услуги» внутри каждого документа. У меня есть 4 поля:

  • имя
  • описание
  • userID
  • Рейтинг

, и я хочу предоставить только пользователю возможность изменять свой профиль, кроме рейтинга. Я хочу сделать его доступным (можно обновлять) для всех, я проверяю такую ​​проблему и получаю одно решение - создать подпрограмму. Коллекция в профиле do c Я называю это "рейтингом", содержащим do c с именем "rate", и я делаю только эту вложенную коллекцию доступной для обновления для всех, но я не знаю, как получить вложенную коллекцию данные из do c any solution plz с этой проблемой рейтинга:

Мои правила безопасности после создания подколлекции для рейтинга:

 match /{category}/{serviceid} {
   allow read,create;
   allow update : if resource.data.userID == request.auth.uid;
   match /rating/rate {
     allow read,write;
   }
 }

Я получаю все услуги с const docs =db.collection("categoryname").get(): и я получаю данные каждого элемента следующим образом: docs.foreach(doc => doc.data().name) Как я могу получить данные подколлекции («рейтинг») из do c?

1 Ответ

1 голос
/ 13 июля 2020

Вы понимаете, что этими правилами вы разрешаете доступ всем? Даже люди, не прошедшие аутентификацию, смогут делать неограниченное количество записей. Это то, что вы действительно хотите?

Чтобы ответить на ваш вопрос, вы можете просто сделать доступ к документу /rating/rate:

let category = "categoryname";
db.collection(category).get()
.then(function(querySnapshot) {
  querySnapshot.foreach(
    function(doc) {
      let serviceid = doc.id;
      db.collection(category).doc(serviceid).collection("rating").doc("rate").get()
      .then(function(doc) {
        ... // do whatever
      }
    }
  )
}

Вы также можете проверить официальную документацию , чтобы получить документ.

...