Я хочу сохранить некоторые данные на Items
узел в firebase. я был в состоянии спасти, когда мое правило былоFirebase DatabaseError: Permission denied
"Items":{
".write": "auth != null",
".read": "auth != null"
}
, но я хочу, чтобы пользователи писать/обновить свои собственные элементов и я не хочу использовать $
переменные, так как она будет добавить некоторые данные на моем пути , что
ниже метод добавит некоторые данные на моем пути вместо /Items
будет /key/Items
{
"rules": {
"Items": {
"$user_id": {
".read": "auth != null",
".write": "$user_id === auth.uid"
}
}
}
}
Поэтому лучший метод, который я видел в том, чтобы написать мое правило как этот
"Items":{
".read": "auth != null",
".write": "(data.exists() && data.child('userId').val() === auth.uid) || (!data.exists() && newData.child('userId').val() === auth.uid)"
}
}
Когда я запускаю приведенный ниже код на тренажере, все нормально
{
"userId":"xxxxxxxxxxxxxxxxx"
}
Но wnen я пытаюсь загрузить данные из моего телефона, я получаю сообщение об ошибке
setValue at /Items/-KWH6tgdLPGTdascf-w3 failed: DatabaseError: Permission denied
Где я буду неправильно?
но что будет делать все редактировать данные. Я хочу, чтобы только владельцы данных делали это –
В этом случае вам нужно использовать только '$', [this] (http://stackoverflow.com/questions/31736252/firebase-user-read-all-write-new -but-only-modify-his-own-data) и [this] (https://stackoverflow.com/questions/38600989/keeping-firebase-data-secure) –
добавление «$» заставит меня включить некоторые дополнительные данные на моем пути. то есть ссылка на мою базу данных должна указывать на '/ items/key /'. Я не хочу включать какой-либо ключ –