Правила проверки Firebase - пустая проверка данных [дубликат]

Возможно, я немного опаздываю на вечеринку, но этот метод работает для меня и проще, чем метод COALESCE.

SELECT STUFF(
             (SELECT ',' + Column_Name 
              FROM Table_Name
              FOR XML PATH (''))
             , 1, 1, '')
5
задан Michael Lehenbauer 12 March 2014 в 19:47
поделиться

1 ответ

В общем случае правила .validate используются для определения того, какие данные должны выглядеть как , если они существуют. Они намеренно не запускаются, когда данные удаляются. Вместо этого вы должны использовать правила .write, чтобы принимать решения о том, разрешено ли писать (или удалять).

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

{
  "rules": {
    ".read": true,
    "$room": {
      ".write": "auth != null && (
                   (!data.exists() && newData.child('owner').val() == auth.uid) ||
                   (!newData.exists() && data.child('owner').val() == auth.uid))",
      ".validate": "newData.hasChildren(['owner', 'name'])",
      "name": {
        ".validate": "newData.val().length > 10"
      },
      "messages": {
        ".write": "auth != null"
      }
    }
  }
}

Правило .write используется, чтобы решить, имеет ли пользователь разрешение на создание / удаление комнаты чата, а также правила .validate для определения то, что должно выглядеть в чате, если оно существует.

Если при удалении были выполнены правила .validate, вы никогда не сможете удалить чат-комнату (поскольку оба правила .validate завершились с ошибкой). Следовательно, решение не запускать правила проверки на удаление.

12
ответ дан Michael Lehenbauer 24 August 2018 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: