3

我想在Firebase中手動註冊用戶。我如何檢查用戶是否已經註冊或者他的(USERID)是否存在?如果它存在,則不應該讓他註冊,否則如果他的用戶名尚未在數據庫中,則應保存他的信息。這是我目前的代碼,其中只保存userinfo仍然可用。如何使用angularfire檢查Firebase中是否存在數據?

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

}; 

回答

3

沒有什麼內置到AngularFire中用於檢測節點是否存在。但由於AngularFire是建立在火力地堡的JavaScript SDK的頂部,您可以使用JavaScript API做到這一點:

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

認識到的重要一點是,這個片段使用value事件,這將觸發null如果有在當前位置沒有數據。

一個$firebaseArray()從AngularFire,另一方面使用火力地堡的child_*事件,不能用於檢測收集在一個特定的孩子的存在。

+0

感謝我接着說:如果(snapshot.exists ()){alert(「那個用戶已經存在」);} else {alert(「用戶不存在」);}'提示你。 – frank2k16

0

如果將您的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$; 
} 
相關問題