ListView внутри SwipeRefreshLayout не может обработать событие onItemLongClick

В общем случае правила .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 завершились с ошибкой). Следовательно, решение не запускать правила проверки на удаление.

0
задан Daniel Scott 24 February 2015 в 16:19
поделиться