2016-07-09 5 views
1

サーバの切断時にAngularfire2のFirebaseオブジェクトを削除する正しいパターンは何ですか? FirebaseObjectObservableは、FirebaseOnDisconnectインターフェイスにフックを提供していないようです。Angularfire2 - 切断時にオブジェクトを削除するにはどうすればいいですか?

+0

からそれを得るために、データベースのメソッドを使用することができFirebaseのJavaScript SDKは、[このような場合のために、 'onDisconnect()'と呼ばれる機能](HTTPSがあります。 //firebase.google.com/docs/database/android/offline-capabilities#how-ondisconnect-works)。 AngularFireがこの機能をラップしていない場合は、基礎となるFirebaseデータベース参照を介してJavaScript SDKにアクセスできます。 –

+0

ありがとうございます。これはうまくいきます: 'const onDisconnectRef:FirebaseOnDisconnect =新しいFirebase(url).child(path).onDisconnect();' – okhobb

+0

聞いてよかったです。コードで回答を書くことができますか?また、プロジェクトでそれを使用する方法を教えてください。スタックオーバーフローと評判を得る良い方法については、ここで自己回答をお勧めします。 –

答えて

0
const onDisconnectRef: FirebaseOnDisconnect = new Firebase(url).child(path).onDisconnect(); 
onDisconnectRef.remove(); 

、あなたがキャンセルする必要がある場合は...

onDisconnectRef.cancel(); 

firebase typescriptですタイプを取得するには、

typings install --save --ambient firebase 

は、これらはVSCodeインテリセンスでグローバルに用意されています。あなたのファイルにfirebaseをインポートする必要はありません(なぜこれが分かりませんか)。

3

OnDisconnect APIは、AngularFire2ではネイティブにサポートされていませんが、FirebaseObjectObservableには引き続き参照を渡すことができます。

constructor(af: AngularFire) { 
    const ref = firebase.database().ref().child('item'); 
    ref.onDisconnect().remove(); 
    const myObjObs = af.object.list(ref); 
} 
+0

はfirebaseを最初にインポートする必要があります 'firebase 'をfirebase'からインポートします; – henry74

0
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database'; 
... 

    user: FirebaseObjectObservable<any>; 

    constructor(db: AngularFireDatabase) { 
    this.user = db.object('/users/test'); 
    this.user.set({state: "online"}); 
    this.user.$ref.onDisconnect().update({state:"offline"}); 
    } 
0

それとも、単にAngularFireDatabase

constructor(private db: AngularFireDatabase) { 
     let url='/items/item'; 
     const ref = this.db.database.refFromUrl(url); 
     ref.onDisconnect().remove(); 
     const myObjObs = db.object.list(url); 
    } 
関連する問題