2016-07-09 63 views
1

什麼是在服務器斷開連接中刪除Angularfire2中的Firebase對象的正確模式? FirebaseObjectObservable似乎沒有爲FirebaseOnDisconnect界面提供掛鉤。Angularfire2 - 如何刪除斷開連接的對象?

+0

得到它的火力地堡的JavaScript SDK有一個[稱爲'onDisconnect()'這類案件的特徵(HTTPS: //firebase.google.com/docs/database/android/offline-capabilities#how-ondisconnect-works)。如果AngularFire不包裝此功能,則可以通過底層的Firebase數據庫引用訪問JavaScript SDK。 –

+0

好的謝謝;這個工程:'const onDisconnectRef:FirebaseOnDisconnect = new Firebase(url).child(path).onDisconnect();' – okhobb

+0

好聽。你能寫出一個關於代碼的答案,以及如何在項目中使用它,以便其他人也可以從中受益?在Stack Overflow中鼓勵自我回答,這是獲得聲譽的好方法。 –

回答

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

,如果您需要取消...

onDisconnectRef.cancel(); 

得到火力打字稿類型,做

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); 
    } 
相關問題