繁体   English   中英

Firebase登录谷歌电子邮件

[英]firebase login google email

我正在将网站建设为学校项目,并且将Angularjs与Firebase结合使用。

我正在尝试检查用户ID是否位于数组中,但似乎无法正确比较字符串。

控制器:

'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>

如您所见,html页面与控制器做了相同的比较,但是html页面返回了正确的答案,而控制器却没有。

未经验证的$ scope.account为null。 在这里使用$ onAuth可能更好。

$ onAuth(); 侦听客户端身份验证状态的更改。 当客户端的身份验证状态更改时,将触发提供的回调。 资源

$ scope.users = $ firebase(usrRef)。$ asArray()是异步的。 当您遍历$ scope.user时,该时间可能为空。 您应该等待直到从Firebase接收到数据。 签出$ loaded();

$()加载; 返回从Firebase下载初始阵列数据时解决的Promise。 承诺解析为数组本身。 资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM