У меня возникает проблемы при попытке следующего правила проверки:Firebase правила безопасности, проходящее через базу данных для проверки
".validate": "newData.val() >= now - 2000 && newData.val() >= data.parent().parent().parent().parent().parent().child('users/'+auth.uid+'/lastPostAt').val() - 2000"
Вот соответствующий район моей схемы базы данных Firebase:
areas
-> area1
-> posts
-> uid
-> post object (has timestamp property (date) - firebase timestamp)
user
-> uid
-> user object (has timestamp property (lastPostAt) - Firebase timestamp)
Когда отправляется сообщение, оно обновляет свойство timestamp lastPostAt
в объекте пользователя для конкретного пользователя, отправившего сообщение.
Что я ищу - это некоторые правила Firebase, чтобы гарантировать, что при отправке нового сообщения он не будет сохранен, если пользователь не отправил другое сообщение в течение последних 2 минут.
Я смотрю на этот post на StackOverflow, но я пытаюсь посмотреть, возможно ли это сделать с моей реализацией.
Под $uid
для моих сообщений узла, я пробуя .validate
правила:
"posts" : {
"$message_id": {
".indexOn": "username",
".write": "newData.hasChildren(['date'])",
"date" : {
".validate": "newData.val() >= now - 2000 && newData.val() >= data.parent().parent().parent().parent().parent().child('users/'+auth.uid+'/lastPostAt').val() - 2000"
}
В настоящее время, когда я отправить почту, и метки времени, то же самое, но я могу продолжать отправлять все больше и больше сообщений без задержки.
Почему вы удалили [свое предыдущее сообщение] (http://stackoverflow.com/questions/41124660/firebase-rules-to-prevent-spam) и добавить новый? Если у вас есть детали для добавления, добавьте их в свой первоначальный вопрос в следующий раз. –
Вы можете использовать 'root.child ('users /' + auth.uid + '/ lastPostAt')' вместо 'data.parent(). Parent(). Parent(). Parent(). Parent(). Child ('пользователей /' + auth.uid + '/ lastPostAt') ' –