Javascript firebase登录谷歌电子邮件
我正在建立一个网站作为一个学校项目,我正在使用Firebase的Angularjs 我试图检查用户id是否位于数组中,但它似乎无法正确比较字符串 控制员:Javascript firebase登录谷歌电子邮件,javascript,angularjs,firebase,Javascript,Angularjs,Firebase,我正在建立一个网站作为一个学校项目,我正在使用Firebase的Angularjs 我试图检查用户id是否位于数组中,但它似乎无法正确比较字符串 控制员: 'use strict'; var AboutController = angular.module('AboutController', []); AboutController.factory('Auth', ['$firebaseAuth', function($firebaseAuth) { var ref = new Fir
'use strict';
var AboutController = angular.module('AboutController', []);
AboutController.factory('Auth', ['$firebaseAuth', function($firebaseAuth) {
var ref = new Firebase('https://MYURL.firebaseio.com/');
return $firebaseAuth(ref);
}]);
AboutController.controller('AboutCtrl', function ($scope, $firebase, Auth) {
var usrRef = new Firebase('https://MYURL.firebaseio.com/Users');
$scope.users = $firebase(usrRef).$asArray();
$scope.auth = Auth;
$scope.account = $scope.auth.$getAuth();
var id = $scope.account.google.id;
var check = false;
for(var user in $scope.users){
if(user.UID === id){
check = true;
break;
}
}
$scope.isUser = check;
if($scope.isUser !== true){
$scope.users.$add({
UID: $scope.account.google.id,
});
}
});
html页面:
<div ng-controller="AboutCtrl">
<div>
<h3>User Data</h3>
<p>{{account.google.id}}</p>
<pre>{{account|json}}</pre>
<p>User has logged in before:{{isUser}}</p>
<pre>{{users|json}}</pre>
<div>
<p>This compares the current UID's in the db to the current user's uid</p>
<div ng-repeat='usr in users'>
<p>{{usr.UID}} {{usr.UID == account.google.id}}</p>
</div>
</div>
</div>
</div>
用户数据
{{account.google.id}
{{account | json}
用户已在以下时间之前登录:{{isUser}
{{users | json}}
这会将数据库中的当前UID与当前用户的UID进行比较
{{usr.UID}{{usr.UID==account.google.id}
如您所见,html页面与控制器进行了相同的比较,但html页面返回了正确的答案,而控制器没有返回正确的答案。$scope.account在您未经过身份验证时为空。在这里使用$onAuth可能更好 $onAuth();侦听对客户端身份验证状态的更改。当客户端的身份验证状态更改时,将触发提供的回调 $scope.users=$firebase(usrRef)。$asArray()是异步的。当您在$scope.user上循环时,此时它可能为空。您应该等到从Firebase接收到数据。签出$loaded() $loaded();返回从Firebase下载初始阵列数据时解析的承诺。承诺解析为数组本身
非常感谢。这是问题的一部分。另一个问题是“user.UID”返回时未定义。