我发现AngularFire2库文档很少,很难使用。我有一个angular2应用程序,并想知道是否有人可以帮助我清除使用vanilla JS Firebase代码而不是angularfire2的优点/缺点?使用vanilla JS版本会杀掉我可能正在使用的angular2功能吗?我很困惑为什么使用一个而不是另一个,个人的香草JS一个是更好的记录和功能丰富,我甚至看不到如何在AngularFire2中注册用户,它没有任何UI元素和可观察到的是尽我所能!
答案 0 :(得分:0)
您可以直接使用vanilla版本。即使有可观察性 - 可观察和承诺也能很好地协同工作。例如:
Observable.of(new firebase.auth.GoogleAuthProvider())
.switchMap(o => firebase.app().auth().signInWithPopup(o))
.subscribe()
AngularFire2的主要优点是令人头疼的observables(;我建议你学习rxjs并开始使用它们而不是promises。我使用vanilla JS SDK,但是,我根据AngularFire2的作用创建了refObservable
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();
});
它与其他模块类似 - 存储,消息传递,身份验证...我更喜欢Firebase SDK而不是AngularFire2。我还发现在服务/网络工作者中使用它更容易。