0

我想將一些數據保存在firebase中的Items節點上。我能救我的時候規則是Firebase DatabaseError:權限被拒絕

"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 - 但只修改他自己的數據)和[這](https://stackoverflow.com/questions/38600989/keeping-firebase-data-secure) –

+0

添加「$」將迫使我包括一些額外的數據在我的道路上。那就是我的數據庫引用應該指向'/ items/key /'。我不想包含任何密鑰 –