【问题标题】:How to check if data exists in firebase using angularfire?如何使用angularfire检查firebase中是否存在数据?
【发布时间】:2017-01-07 03:41:05
【问题描述】:

我想在 firebase 中手动注册用户。我如何检查用户是否已经注册或者他的( USERID )是否存在?如果存在,则不应让他注册,否则如果他的用户 ID 尚未在数据库中,则应保存他的信息。这是我当前的代码,其中仅保存用户信息仍然可用。

$scope.details={};

$scope.registerme= function() {
var someDate = new Date();
var ref = firebase.database().ref('/Users/');
$scope.submitme = $firebaseArray(ref);


            $scope.submitme.$add({
            facebookid: $scope.details.userid,
            firstname: $scope.details.firstname,
            lastname: $scope.details.lastname,
            timestamp: someDate.toString(),
            }).then(function(ref) {
            alert('Registration success.');
            }).catch(function(error) {
            alert('Registration Failed.');
            });

};

【问题讨论】:

    标签: javascript ionic-framework firebase firebase-realtime-database angularfire


    【解决方案1】:

    AngularFire 没有内置任何东西来检测节点是否存在。但由于 AngularFire 是在 Firebase JavaScript SDK 之上构建的,因此您可以使用 JavaScript API 做到这一点:

    ref.child(uid).once('value', function(snapshot) {
        console.log(snapshot.exists());
    });
    

    需要意识到的重要一点是,这个 sn-p 使用了一个 value 事件,如果当前位置没有数据,它将触发 null

    另一方面,来自 AngularFire 的 $firebaseArray() 使用 Firebase 的 child_* 事件,该事件不能用于检测集合中是否存在特定子节点。

    【讨论】:

    • 谢谢我在提示中添加了` if (snapshot.exists()) {alert("那个用户已经存在");} else {alert("用户不存在");} ` .
    【解决方案2】:

    如果您将 db 实体的链接设置为 FirebaseObjectObservable,那么您可以使用 exists() 来检查您的实体是否存在。 那我如何检查我的表是否存在,如果不存在,我将用初始数据填充它:

    vehicle.service.ts:

    ...
    public vehicles$$: FirebaseObjectObservable<any>; // link to '/vehicles' as object
    public vehicles$ FirebaseListObservable<Vehicle[]>; // link to '/vehicles' as list 
    ...
    constructor(
      private _http: Http, 
      private _db: AngularFireDatabase,
    
    ) { 
      this.vehicles$$ = _db.object('/vehicles'); 
      this.vehicles$ = _db.list('/vehicles');
    }
    
    
    public getVehicles(){
      this.vehicles$$.subscribe(table => {
        if(!table.$exists()){          
          this.getVehiclesFromFile().subscribe(vehicles(vehicles: Vehicle[]) =>
            this.vehicles$$.set(vehicles).catch(err=>console.error(err))
          )
        }
      })
      return this.vehicles$;
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 2020-12-17
      • 2017-12-04
      • 2021-11-06
      • 2020-11-02
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多