Firebase Правило для чтения данных на вложенных узлах за последние 10 минут - PullRequest
0 голосов
/ 20 октября 2018

Я хочу реализовать правило для чтения данных за последние, скажем, 5 или 10 минут.Моя база данных выглядит так:

this.

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

"Messages": {
            "$messagekey": {
                "$key": {
                   ".read":"root.child('Users/Messages/'+$messagekey+'/'+$key+'/messageTime').val()> (now - 600000000)",                    }
                },
             ".write":"auth!=null"
            }

И это также

"Messages": {
        "$messagekey": {
            "$key": {
                ".read": "data.child('messageTime').val() > (now - 600000)"
                    }
                },
                ".write": "auth!=null"
            }

Любая помощь или предложения, пожалуйста.Сообщение об ошибке enter image description here

Редактировать 2 Используя это правило, я все еще не могу заставить его работать

{
        "rules": {
        "Messages": {
                    "$messagekey": {
                        "$key": {
                            ".read": "data.child('messageTime').val() > (now - 90000000)"
                        }
                    },
                    ".write": "auth!=null"
                }
      }
    }

и вот мои данные

 Users
        Messages
            WZTDdZslJrMFqgDLNWo4jXehsF02_nUVrJthSqHXH8Ur0stRz2tihxdg1
                -LPFPTBx7BA6urp-CSbZ
                        messageText: "Hello"
                        messageTime: 1540059028779
                        messageUser: "Joker's Grin"
                        messageUserId: "WZTDdZslJrMFqgDLNWo4jXehsF02"
                -LPFPUB5efDAIVu_AxP0
                        messageText: "how are you"
                        messageTime: 1540059028779
                        messageUser: "Crazy Eights"
                        messageUserId:"nUVrJthSqHXH8Ur0stRz2tihxdg1"

Я использую две подстановочные знаки " messagekey " и " key " для достижения messageId.Также пробовал эти правила, а также ни одна из этих работ, кроме чтения: true.

    ".read": "data.child('messageTime').val() >0"
    ".read": "data.child('messageTime').val() !==null"
    ".read": "data.exists()"
    ".read": "data.hasChild('MessageId')"

Вот скриншоты

enter image description here

1 Ответ

0 голосов
/ 20 октября 2018

Я только что добавил это значение в собственную базу данных:

"52903949": {
  "messageTime": 1540054472392
}

Где 52903949 - это идентификатор вашего вопроса, а 1540054472392 - это значение, возвращаемое Date.now() при добавлении.это.

Затем я добавил эти правила:

{
  "rules": {
    "52903949": {
      ".read": "data.child('messageTime').val() > (now - 600000)"
    }
  }
}

И смог получить доступ к данным в симуляторе с таким результатом:

enter image description here

Если я уменьшу 600000, чтение не будет выполнено, поскольку время уже истекло.


Обновлен снимок экрана с вложенными дочерними элементами :

enter image description here

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