Search code examples
firebasefirebase-realtime-databasefirebase-security

Getting Permission denied when querying Firebase Realtime DB with orderByChild?


My rules:

{
    "rules": {
        "items": {
            ".read": "auth.uid != null && query.orderByChild == 'owner' && query.equalTo == auth.uid"   
        }
}

My query function:

const ref = firebase.database().ref("items").orderByChild("owner").equalTo(firebase.auth().currentUser?.uid).ref 

ref.on('value', (v)=>{
   console.log("ok: ", v.val())
}, (e)=>{
   console.log("not allowed: ", e)
})

I keep getting "Permission denied". What am I doing wrong?


Solution

  • Found the reason. In my query, I called "....equalTo(...).ref"

    Removing the .ref works:

    const ref = firebase.database().ref("items").orderByChild("owner").equalTo(firebase.auth().currentUser?.uid)
    
    ref.on('value', (v)=>{
       console.log("ok: ", v.val())
    }, (e)=>{
       console.log("not allowed: ", e)
    })