我正在尝试在我的父users
我正在实施这一行:
var meetingRef= firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings');
在我的users
下,我已将用户Id's
注册为哈希值,我在上面的代码中使用了它。当前用户通过身份验证后,他可以从UI创建一些会议。我希望这些会议能够进入firebase数据库中的特定哈希值。
但每次创建会议时,都会创建undefined
users
个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
值的来源。它来自我创建的服务,{{1}}是当前经过身份验证的用户的哈希值。
我希望会议进入经过身份验证的用户哈希。我想我正在创建错误的参考路径。我怎样才能实现这一目标?
附图:
电流:
必需:
答案 0 :(得分:1)
Aakash,
您创建meetings
文件夹的代码和您添加到帖子中的图片不能一起使用。目前,您正在使用此:
var data = firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings');
但是如果你真的希望meetings
成为users
的直接子项,那么你将需要删除引用的用户id片段,如下所示:
var data = firebase.database().ref('users/meetings');
这取决于您添加到帖子中的内容,但有些事情告诉我,您并不打算在其中绘制meetings
作为用户的直接子项。如果那是你真正想要的,那就是你的答案。
下一篇文章是一个猜测,但是你想要创建的是以下结构吗?
因为如果是,你需要一些我也可以帮助的东西,请告诉我。
<强>更新强>
好的,根据您的评论,我发现您要在我的图片中找到数据结构。
看起来您的代码还可以,但是,在设置data
变量的恰当时刻,您的$rootScope.currentUser.$id
为undefined
。这可能是由于javascript的异步性质。这意味着,有时您的user
变量属实,但是,$rootScope.currentUser.$id
仍然没有完全赶上undefined
。
我会在继续之前检查变量,只是为了确保所有内容都按顺序排列:
if($rootScope.currentUser.$id != undefined){
var data = firebase.database().ref('users/' + $rootScope.currentUser.$id + '/meetings');
}else{
return;
}
这将阻止您在数据库中获取新的undefined
对象。
答案 1 :(得分:0)
我找到了这个问题的答案。 我将meetingRef更改为:
var meetingRef = firebase.database().ref('users/' + user.uid + '/meetings');
它对我有用。