0

Я хочу сохранить некоторые данные на 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 

Где я буду неправильно?

ответ

0

набор баз данных правил чтения-записи в true

"Items":{ 
    ".write": "true", 
    ".read": "true" 
} 
+1

но что будет делать все редактировать данные. Я хочу, чтобы только владельцы данных делали это –

+0

В этом случае вам нужно использовать только '$', [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) –

+0

добавление «$» заставит меня включить некоторые дополнительные данные на моем пути. то есть ссылка на мою базу данных должна указывать на '/ items/key /'. Я не хочу включать какой-либо ключ –