私は、TypescriptでAngular 2アプリを開発しています。データを同期するときにオブジェクト型を非常に簡単に永続させることができない場合、関数を失うことなく、Typescript型をFirebaseオブジェクトObservableに同期
私は手動でプロパティを設定しています。場合によっては、$ exists()、$ key、createdat関数、およびプロパティを削除して、データを更新することができます。
クラスを完全に変更せずにFirebaseオブジェクトから設定する方法はありますか?例えば
:フリップ側では
search$:FirebaseObjectObservable<ISearchQuery>;
search:ISearchQuery;
constructor(public af: AngularFire, public auth: AuthService){
this.search$ = this.af.database.object(`/queries/saved/${auth.id}`);
//THIS IS HOW I WANT TO DO IT
this.search$.subscribe((data)=>{
if(data.$exists()){
this.search=data;
}
});
//THIS IS WHAT I'VE RESORTED TO
this.search$.subscribe((data)=>{
if(data.$exists()){
this.search.categories = data.categories;
this.search.creators = data.creators;
this.search.endDate = data.endDate;
this.search.startDate = data.startDate;
this.search.location = data.location;
}
});
}
私は、データを同期して更新した後、私は、更新またはfirebaseに設定する場合は、各プロパティを選択する必要があります。また、私が直接同期すると問題にぶつかります。クラスファンクションも失われます(ファイヤーベースオブジェクトには、プロトタイプに独自の関数セットがあるため)。
プロパティでピッキングプロパティを避ける方法や、TypescriptでFirebaseオブジェクトを同期させるより良い方法はありますか?
などが...しかし、それは私のように見えるの機能を取り除くことなく、データを再同期私が保存したいクラスをこのようにインスタンス化しても、私のISearchQuery型の関数は失われます。それを行う方法はありますか? –
答えを更新しました。 – cartant
それは私に頭痛の多くを節約します。 $ exists、$ keyなどを削除せずに直接オブジェクトを同期することができました。コンストラクタを使用して匿名オブジェクトを渡すことは意味があります。感謝万円! –