[英]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.