2016-07-09 27 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); 
    }