2017-03-22 70 views
0

我發現AngularFire2庫文檔記錄不完整,很難使用。我有一個angular2應用程序,並想知道是否有人可以幫助我清除使用vanilla JS Firebase代碼而非angularfire2的優點/缺點?是否使用香草JS版本取消了我可能使用的angular2功能?我很困惑,爲什麼使用一個在另一個,個人香草JS一waaaay更好地記錄和功能豐富,我什至不能看到如何註冊AngularFire2的用戶,它沒有任何UI元素和observables是盡我所能!AngularFire2 vs Firebase JS

回答

0

您可以直接使用vanilla版本。即使有可觀察到的情況 - 可觀察到的和承諾一起很好地工作。例如:

Observable.of(new firebase.auth.GoogleAuthProvider()) 
    .switchMap(o => firebase.app().auth().signInWithPopup(o)) 
    .subscribe() 
AngularFire2的

主要優點是頭部傷害可觀(;我建議你學習rxjs,並開始使用過承諾,我使用香草JS SDK,但是,我已經根據創建refObservable什麼。 AngularFire2確實有FirebaseObservables所以,很簡單,卻足以讓我的需求:。

export function refObservable(ref): Observable<firebase.database.DataSnapshot> { 
    return Observable.create(observer => { 
    let fn; 
    try { 
     fn = ref.on('value', snapshot => { 
     observer.next(unwrapSnapshot(snapshot)); 
     }); 
    } catch (error) { 
     observer.error(error); 
    } 
    return() => ref.off('value', fn); 
    }); 
}; 

其中unwrapSnapshot(snapshot)是檢查快照,並返回相應的結果(數組,對象,字符串等)的簡單功能,我用它來從firebase讀取數據創建/更新/刪除操作我直接做:

Observable.of(checkUserPermission()) 
    .switchMap(() => { 
    return firebase.database().ref('what/ever').remove(); 
    }); 

它與其他模塊類似 - 存儲,消息,身份驗證...我更喜歡通過AngularFire2的Firebase SDK。我也發現在服務/網絡工作者中使用起來更容易。

  • 如果你已經知道香草sdk,堅持下去。
  • 如果你只需要數據庫讀/寫和基本認證使用AngularFire2就簡單了。
  • 如果您需要使用JS SDK更多地控制Firebase功能。
+0

感謝您的回答。我一直在努力讓自己的腦袋圍繞rxJS - 但是我在更高級的用途中掙扎着一些「概念」,特別是當在服務中使用Observable時。 '的getUser(){ 返回this.getAuth()switchMap((AUTH)=> { 返回this.af.database.object( 「用戶/」 + auth.uid + 「/公共」); })。 ; } getAuth(){ return this.af.auth.map((auth)=> {return auth}); }' –

+0

很難說出你想從評論中獲得什麼。發佈有關您的問題的其他問題。至於RxJS,是的,當你開始的時候它可能是壓倒性的。簡單來說,網上有很多資源 - 課程/教程等... – Sasxa

相關問題