2016-07-09 3 views
1

서버 분리시 Angularfire2에서 Firebase 객체를 제거하는 올바른 패턴은 무엇입니까? FirebaseObjectObservable은 FirebaseOnDisconnect 인터페이스에 후크를 제공하지 않습니다.Angularfire2 - 연결 해제시 오브젝트를 제거하는 방법?

+0

에서 그걸 얻기 위해 데이터베이스 방법을 사용할 수 있던 중포 기지 자바 스크립트 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(); 

는 중포 기지 타이프 라이터 유형을 얻을 수는

typings install --save --ambient firebase 

이이 VSCode 인텔리에서 전 세계적으로 사용할 수있는 않습니다. 파일에 파이어베이스를 가져올 필요가 없습니다 (이유를 이해하지 못합니다).

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); 
    }