Angularjs AngularFire2 vs Firebase JS

Angularjs AngularFire2 vs Firebase JS,angularjs,angular,firebase,angularfire2,Angularjs,Angular,Firebase,Angularfire2,我发现AngularFire2库的文档很差,很难使用。我有一个angular2应用程序,想知道是否有人能帮我澄清一下仅仅使用vanilla JS Firebase代码而不是angularfire2的利弊?使用vanilla JS版本会杀死我可能正在使用的angular2功能吗?我不明白为什么要使用一个而不是另一个,就个人而言,香草JS一个文档记录得更好,功能也更丰富,我甚至不知道如何在AngularFire2中注册用户,它没有任何UI元素和可观察的东西,这让我头疼 您可以直接使用香草版。即使是可

我发现AngularFire2库的文档很差,很难使用。我有一个angular2应用程序,想知道是否有人能帮我澄清一下仅仅使用vanilla JS Firebase代码而不是angularfire2的利弊?使用vanilla JS版本会杀死我可能正在使用的angular2功能吗?我不明白为什么要使用一个而不是另一个,就个人而言,香草JS一个文档记录得更好,功能也更丰富,我甚至不知道如何在AngularFire2中注册用户,它没有任何UI元素和可观察的东西,这让我头疼

您可以直接使用香草版。即使是可观察的,可观察和承诺也能很好地协同工作。例如:

Observable.of(new firebase.auth.GoogleAuthProvider())
  .switchMap(o => firebase.app().auth().signInWithPopup(o))
  .subscribe()
AngularFire2的主要优点是令人头痛的可观察性(;我建议您学习rxjs并开始使用它们,而不是承诺。我使用的是vanilla JS SDK,但是,我基于AngularFire2的功能创建了
可再观察的
。它更简单,但足以满足我的需要:

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);
  });
};
它与其他模块类似——存储、消息传递、身份验证……我更喜欢Firebase SDK而不是AngularFire2。我还发现它更易于在服务/web工作者中使用

  • 如果你已经知道香草sdk,那就坚持下去
  • 如果您只需要数据库读/写和基本身份验证,那么使用AngularFire2更简单
  • 如果您需要更多地控制firebase功能,请使用JS SDK

谢谢你的回答。我一直在想rxJS的问题,但是我在更高级的应用中遇到了一些“概念”,特别是在服务中使用Observable时。
getUser(){return this.getAuth().switchMap((auth)=>{return this.af.database.object(“users/”+auth.uid+“/public”);};}getAuth(){return this.af.auth.map((auth)=>{return auth});}
很难从评论中看出你想要达到什么目的。发布另一个关于你的问题的问题。至于RxJS,是的,当你开始的时候,它会让你不知所措。放轻松,网上有很多资源-课程/教程等。。。
Observable.of(checkUserPermission())
  .switchMap(() => {
    return firebase.database().ref('what/ever').remove();
  });