2

私は私の親usersfirebaseデータベース子参照問題

内部会議firebase参照を作成しようとしている私は、この行の実装しています:私のusersの下

var meetingRef= firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings'); 

を、私はハッシュとして、ユーザId'sを登録しています、私は上記のコードでこれを使用します。現在のユーザーが認証されると、UIからいくつかの会議を作成します。私は、これらの会議がfirebaseデータベースの彼の特定のハッシュに入ることを望みます。

しかし、会議を作成するたびにundefined子参照のusersが作成され、認証されたユーザーの会議が表示されます。あなたはその$rootScope.users.$id値が来ている場所へと思っている場合は

これは私の完全なコード -

myApp.controller("MeetingsController", 
    ['$scope','$rootScope','$firebaseArray', 
    function($scope,$rootScope,$firebaseArray){ 

    var ref = firebase.database().ref(); 
    var auth = firebase.auth(); 

     auth.onAuthStateChanged(function(user) { 
      if (user) { 
      var meetingRef= firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings'); 
      var meetingsInfo=$firebaseArray(data); 

      $scope.addmeeting=function(){ 
       meetingsInfo.$add({ 
        name:$scope.meetingname, 
        date:firebase.database.ServerValue.TIMESTAMP 
       }).then(function(){ 
        $scope.meetingname=' '; 
       }) 
      }; 
      } 
     }); 

}]); 

です。それは私が作成したサービスから来て、$idは現在の認証されたユーザーのハッシュ値です。

ミーティングを認証されたユーザーのハッシュに入れたいと思っています。私は間違った参照パスを作成していると思う。私はこれをどのように達成できますか?添付

画像:

電流:

enter image description here

必須:

enter image description here

+0

実際に作成している構造とともに、作成しようとしている構造を示すものを投稿できますか?だから私たちはあなたの意図と結果をよりよく視覚化することができます。 – Ryan

+0

投稿に恣意的な変更を加えました。見てください。 @ライアン –

答えて

0

私はこの回答を見つけました。 は私がにmeetingRefを変更:

var meetingRef = firebase.database().ref('users/' + user.uid + '/meetings');

、それが私のために働きました。

1

Aakash、

を作成するために、あなたのコードフォルダとあなたが投稿に追加した図が一緒には行きません。

var data = firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings'); 

をしかし、あなたが本当にしたい場合はmeetingsは、あなたがこのような参照のユーザIDピースを取り除く必要がありますあなたがして描かれている方法usersの直接の子であることを:現在、あなたはこれを使用しています:

var data = firebase.database().ref('users/meetings'); 

これはあなたのポストに追加どのようなオフに基づいている、しかし、何かは、ユーザーへの直接の子としてそこでmeetingsを描画するつもりはなかったことを私に伝えます。それがあなたが本当に欲しかったことなら、それがあなたの答えでしょう。

この次の部分は推測ですが、作成しようとしている次の構造ですか?

enter image description here

それがある場合、あなたは私もして助けることができる別の何かを必要とするので、ちょうど私に知らせてください。

更新:

OK]をクリックして、あなたのコメントに基づいて、私はあなたが私の写真のデータ構造のために行くされていることがわかります。

あなたのコードはOKですが、data変数が設定されている瞬間、$rootScope.currentUser.$idundefinedです。これはおそらくjavascriptの非同期性のためです。つまり、user変数が真である場合がありますが、$rootScope.currentUser.$idは依然として十分に捕捉されておらず、undefinedです。

私はちょうどすべてが順序であることを確認するために、続行する前に、変数のチェックを実行します:

if($rootScope.currentUser.$id != undefined){ 
    var data = firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings'); 
}else{ 
    return; 
} 

これがあなたのデータベースに新しいundefinedオブジェクトを得ることからあなたを停止します。

+0

まさに正しい。あなたが追加したイメージは、まさに私が探しているものです。 @ryan –

+0

他の「ユーザー」はその内部に「ミーティング」が作成されていますか?だから私が意味することは、あなたは正しい行動をしていますか?しかし、あなたは望んでいない最後の余分な「未定義」を得ますか?もしそうなら、私の答えに私のアップデートを見て、あなたの問題を解決するはずです。しかし、他の「ユーザー」が正しく作成されていない場合は、教えてください。 – Ryan

関連する問題