2017-03-22 13 views
0

私は、AngularFire2ライブラリが文書化されておらず、使いにくいことを発見しました。私はangular2アプリより、バニラJSファイアベースのコードを使うのではなく、誰かが賛否両論をクリアする手助けをすることができるかどうか疑問に思っていましたか? vanilla JSバージョンを使用して、私が使用しているかもしれないangular2の機能を無効にしていますか?私はなぜ別のものを使用するのか混乱していますが、個人的にバニラJSの1つはwaaaayが文書化され、豊富な機能を備えています。私の頭の中で!AngularFire2とFirebase JS

答えて

0

バニラバージョンを直接使用することができます。観察可能なものであっても、観察可能であり、約束はうまく機能します。たとえば:。

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

AngularFire2の主な利点は、(ヘッド傷つけて観測されている。私はあなたがrxjsを学び、約束の上にそれらを使用して起動をお勧め私はバニラJS SDKを使用しています、しかし、私は何に基づいてrefObservableを作成しました。AngularFire2はFirebaseObservablesでないことは単純、しかし、私のニーズに十分です:

unwrapSnapshot(snapshot)は、スナップショットをチェックし、適切な結果(配列、オブジェクト、文字列、など...)を返す簡単な関数である
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からデータを読み込みます。作成/更新/削除操作私は直接行います:

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

これは、ストレージ、メッセージング、認証などの他のモジュールと似ています...私はAngularFire2よりもFirebase SDKを好んでいます。私はまた、サービス/ Webワーカーでの使用がより簡単であることを発見しました。

  • もしあなたがすでにvanilla sdkを知っているなら、それにつけてください。
  • データベースの読み取り/書き込みと基本認証のみが必要な場合は、AngularFire2を使用する方が簡単です。
  • firebase機能をさらに制御する必要がある場合は、JS SDKを使用します。
+0

ご回答ありがとうございます。私はrxJSの周りに頭を抱えようとしていましたが、より高度な使い方で、いくつかの "コンセプト"に苦しんでいます。特にObservablesをサービスで使用しています。 戻り値this.af.database.object( "users /" + auth.uid + "/ public"); }} getUser(){ return this.getAuth()。switchMap((auth)=> { } ; } getAuth(){ return this.af.auth.map((auth)=> {return auth}); } ' –

+0

コメントから達成しようとしていることを伝えるのは難しいです。あなたの問題について別の質問を投稿してください。 RxJSの場合は、開始すると圧倒的になることがあります。ちょうどそれを取る、オンラインの多くのリソースがあります - コース/チュートリアルなど... – Sasxa

関連する問題