簡體   English   中英

如何使用angularfire檢查firebase中是否存在數據?

[英]How to check if data exists in firebase using angularfire?

我想在firebase中手動注冊用戶。 如何檢查用戶是否已注冊或者他的(USERID)是否存在? 如果存在則不應讓他注冊,否則如果他的用戶標識尚未在數據庫中,則應保存其信息。 這是我當前的代碼,其中只保存userinfo仍然可用。

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

};

AngularFire中沒有任何內置功能可用於檢測節點是否存在。 但是,由於AngularFire是基於Firebase JavaScript SDK構建的,因此您可以使用JavaScript API執行此操作:

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

要實現的重要一點是,此代碼段使用value事件,如果當前位置沒有數據,則會觸發null

另一方面,來自AngularFire的$firebaseArray() firebaseArray $firebaseArray()使用Firebase的child_*事件,這些事件不能用於檢測集合中特定子項的存在。

如果您將數據庫實體的鏈接設置為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$;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM