Создание правил Firebase для динамических и статических узлов с полями исключений - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть статические узлы, такие как (users-technical-services-orders),

, например (технические), которые я создал (ограничение записи) только для тех же технических параметров, кроме 3 полей, разрешенных для записи для всех пользователей.которые аутентифицировались.

Я могу сделать это следующим образом:

    {
    "rules": {
     //
    "phonenumbers":{
    ".read": true,
    ".write":  "auth !== null"
    },
    "services":{
    ".read": true,
    ".write":  "auth !== null"
    },
    "subservices":{
    ".read": true,
   ".write":  "auth !== null"
    },
    "ChargeRecordsProv":{
    ".read": "auth !== null",
    ".write":  "auth !== null"
  },
    "ChargeRecordsUsers":{
    ".read": "auth !== null",
     ".write":  "auth !== null"
  },
    "ExchangeRecords":{
    ".read": "auth !== null",
    ".write":  "auth !== null"
  },
     "directions":{
    ".read": "auth !== null",
    ".write":  "auth !== null"
  },
     "orders":{
    ".read": "auth !== null",
     ".write":  "auth !== null"
  },
     "setting":{
    ".read": "auth !== null",
  },
     "technical":{
    ".read": "auth !== null",
      "$user_id": {
    ".write": "$user_id === auth.uid"
     },
     "balancepro": {
    ".write": "auth !== null"
     },
     "ratingNumClinets": {
    ".write": "auth !== null"
     },
     "ratingDegree": {
    ".write": "auth !== null"
     },
     "statusProv": {
    ".write": true
     }
  },
     "users":{
    ".read": "auth !== null",
      "$user_id": {
    ".write": "$user_id === auth.uid"
  }
  }
    }
  }

Это хорошо для моих статических узлов.

проблема в следующем:

У меня есть такие динамические узлы, как (Technicians_Carpenter_location), его имя не может быть известно, поскольку оно зависит от того, что может установить администратор.

этим динамическим узлам не разрешено читать илипиши с моими предыдущими правилами.если я добавлю общедоступные правила, подобные этому:

      ".read": "auth !== null",
      ".write":  "auth !== null"

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

Итак, пожалуйстасделать предложение, что я могу сделать?

1 Ответ

0 голосов
/ 21 декабря 2018

Я думаю, вы ищете правило подстановки , которое соответствует всем дочерним узлам, которые не соответствуют ни одному другому правилу.Простым примером такого правила является:

{
  "rules": {
    "profiles": {
      "$profileid": {
        ".read": true
      }
    }
  }
}

. С помощью приведенного выше правила каждый может прочитать определенный профиль (например, /profiles/puf), но никто не может прочитать все профили одновременно (/profiles)..

Таким образом, в вашем случае, если вы хотите предоставить определенные разрешения конкретным именованным узлам и общий набор разрешений всем остальным узлам, вы добавили бы подстановочный знак в ваши текущие узлы.Примерно так:

{
  "rules": {
    "phonenumbers":{
      ".read": true,
      ".write":  "auth !== null"
    },
    ...
    "$other": {
      ".read": "auth !== null",
      ".write":  "auth !== null"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...