0

React-NativeとFirebaseを使用してアプリケーションを構築しています。firebaseデータベースにアクセスできない(読み取りルールをtrueにしているにもかかわらず)

他のアプリで動作していたコード(ファイヤーベースから引き出すためのコード)は今回は動作しませんでした。

Possible Unhandled Promise Rejection (id: 0): 
Error: permission_denied at /userList: Client doesn't have permission to access the desired data. 

私はルール「真」(誰にでもオープン)作成場合でも、私はまだ同じエラーを取得:1時間のデータ呼を、私は次のエラーを取得する - だから、私は簡単であるためにそれを修正しました。同じアプリのどこかに、他の読み書き機能があります。ここで

は私の現在のルールとデータベースの構造です:

import firebase from 'firebase'; 

export const NAMES_FETCH = 'names_fetch' 
export const namesFetch =() => { 

    return (dispatch) => { 
     firebase.database().ref(`/userList`).once('value').then(function(snapshot) { 
     var names = snapshot.val(); 
     console.log('FIREBASE PRINT', names) 
     }); 

    }; 
    }; 

私はすべてを試みた、と午前:ここ

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    }, 
    "public": { 
     "$uid": { 
     ".read": "auth != null", 
     ".write": "auth != null" 
     } 
    }, 
    "feedback": { 
     "$uid": { 
     ".read": "auth != null", 
     ".write": "auth != null" 
     } 
    }, 
    "userList": { 
    "$uid": { 
     ".read": "auth != null", 
     ".write": "auth != null" 
    } 
    } 
    } 
} 

Database Structure

は私のアクション呼び出しを行うクリエイターであります私の知恵の終わりに。ありがとうございました!

+0

非常に同じコードは、私が「ユーザー」の代わりに「ユーザーリスト」のへのREFを変更した場合 –

答えて

0

リスナーを接続すると、Firebaseは読み取り権限をチェックします。その場所への読み取り権限がある場合は、その読み取りまたはクエリが許可されます。場所の読み取り権限がない場合、読み取りまたはクエリは拒否されます。

/userListへの読み取り権限がないため、読み取りが拒否される場合があります。

So:ロケーションを照会するには、そのロケーションの読み取り許可が必要です。また、ある場所に対する読み取り権限があれば、その場所のすべてのデータを読み取ることもできます(docs)。これは、アクセスできないデータをフィルタリングするためにクエリを使用できないことを意味します。rules are not filters

はまた、この現象の回避策が含まれている多く、questions about this topic他の多くのいくつかを参照してください。

+0

はありがとうござい動作することを言及するのを忘れましたあなたの素早い答え!ちょうど1つのフォローアップ:誰も/ userListへの読み取り権限を持っていないのですか?私のルールはuserListの下で許可されたものだと思っていました。ティルールはフィルタガイドラインではありませんか?ありがとう –

+0

私は間違いを見ます。あなたの答えをありがとう! –

関連する問題