2017-03-22 83 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

相关问题