2016-05-12 8 views
0

質問自体は簡単です:Firebaseアプリケーションの場合、ログインしてブロックされなくなった以前にブロックされたデータをどのように取得しますか?この質問をするために私を導くの詳細についてはFirebaseでログインした後に以前にブロックされたデータを取得する

:この特定のアプリで

を、私はルートツリー、ユーザーとデータの2本の主要なサブの木がシンプルなレイアウトを使用します。データツリーは完全に読み取り可能で、誰でもいつでも読むことができます。ユーザーツリーはほぼ逆ですが、唯一の例外はユーザーがログインしている場合を除いて、あなただけの特定のサブツリーを読むことができます。これは、あなたがページに行くときに、あなたにとって非常に重要なこのデータは、あなたがログインするまでブロックされ、それを直接取得する方法がないという問題につながります。しかし、ログインした後は、その情報を取得する権限がありますが、以前はブロックされていたため、その情報を抽出する方法はないようです。

私はドキュメントを精査して、便利なonAuth()のトリガーが1つしか見つかりませんでしたが、ログイン後に実行することはできますが、実際にはデータは取得できません。私が今までに得たことは、必要な特定のサブツリーへのFirebaseリファレンスでしたが、実際にその参照を使用してページロード後のスナップショットを取得する方法はありません。私が持っている唯一のオプションは、ログイン後にページをリフレッシュし、ページのロード時にログインを確認することですが、それは非常にオーバーヘッドです。以前にログインした後に権限を持っていなかったツリー内のデータを取得する他の方法はありますか?それを読む権限がありますか? pageloadでしか定義できないトリガを経由しないfire base referenceの新しいスナップショットを要求することができる、見つからない、またはわからないドキュメントには、ある参考文献があるかもしれませんか?

+0

ページで認証が必要なデータをロードする場合は、認証が発生した後(つまり、onAuth())にリスナーをアタッチする必要があります。その作業に問題がある場合は、[問題を示すコードスニペット](http://stackoverflow.com/help/mcve)を共有すると、助けがさらに簡単になります。 –

+0

@FrankvanPuffelenあなたのおかげで、私はついにそれを働かせました。あなたが説明したように動作するようにコードを書いた後、主な問題が見つかるまでデバッグを続けました。したがって、受け入れられる答えは単に最初の文です。それを答えて、私はそれを受け入れるだろう。それが動作していない場合は、おそらく特定のロジックや構文エラー、あるいはおそらく非常に短い初心者のコードでさえも含めてください。さもなければ、私はある時後になります。 – Ryan

答えて

0

フランク・ファン・パフレンです。

同じくらい簡単です:あまりにも長い間、このリスナーが他のリスナーであるとして、それが動作すると思われ

// setup and other code 
ref = new Firebase(URL);      //The firebase reference 
myuserid = null;        //Storage variable 
myname = null;         //Storage variable 

//Other code 

//Start of answer code 

ref.onAuth(function(authData) {    //ON login status change 

    if (ref.getAuth()) {      //Are they logged in 
     myuserid = authData.uid;    //Stores their UID for use 
     userbase = 'Users/' + authData.uid; //Get path to user info 
     ref.child(userbase).on("value", function(snapshot, prevChildKey) { 
      var newData = snapshot.val();  //get data 
      console.log(newData);    //View data, confirmed it was what I wanted 
      myname = newData.name;    //The important data I needed 
     }) 
    } 
}) 

。これは、認証が変更されるたびに実行され、ログインしている場合は、情報とともにパスにリスナーを関連付けて取得します。より良い方法とおそらくこのコードのいくつかの問題があると確信していますが、それは私のために働くものです。

関連する問題