2

我想创建我的父母内部会议火力参考users火力数据库孩子参考的问题

我实现这一行:

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

在我users,我已经注册了用户Id's作为哈希,这是我在上面的代码中使用的。当前用户获得身份验证后,他将从UI创建一些会议。我希望这些会议进入他在firebase数据库中的特定散列。

但是每次我创建一个会议时,users的一些undefined孩子参考被创建,我在其中看到已认证用户的会议。

这是我的完整代码 -

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=' '; 
       }) 
      }; 
      } 
     }); 

}]); 

如果你想知道在何处是$rootScope.users.$id值来了。它来自我创建的服务,$id是当前认证用户的哈希值。

我希望会议进入经过身份验证的用户哈希。我认为我正在创建错误的参考路径。我怎样才能做到这一点?

图片附:

电流:

enter image description here

要求:

enter image description here

+0

您可以发布显示您正在尝试创建的结构的东西,以及您实际创建的结构吗?所以我们可以更好地形象化你的意图和结果。 – Ryan

+0

对帖子进行了适当修改。请看一看。 @Ryan –

回答

0

我找到了这个答案。 我改变了meetingRef到:

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

,它为我工作。

1

Aakash,

你的代码来创建meetings文件夹和您添加到帖子的绘图不要放在一起。目前,使用的是这样的:

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

但是,如果你真的想meetings是的users直接子你画那么这样你就需要摆脱的用户ID一块这样的参考的:

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

这是基于关闭您添加什么到您的文章,然而,有些东西告诉我,你不是故意在那里绘制meetings作为直接孩子给用户。如果这就是你真正想要的,那么这将是你的答案。

这下一件是猜测,但是下面的结构是你想要创建的?

enter image description here

因为如果是这样,你需要不同的东西,我也可以帮忙,只是让我知道。

更新:

好,根据你的评论,我看到你会在我的画面的数据结构。

它看起来像你的代码是好的,但是,在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