【发布时间】:2017-06-02 08:41:50
【问题描述】:
我正在使用 Typescript 开发 Angular 2 应用程序,但我经常遇到问题,即在同步数据时我似乎无法很容易地持久化对象类型。
我一直在手动设置属性。在某些情况下,我只是删除了 $exists()、$key、createat 函数和属性,以便能够更新数据。
有没有办法在不完全改变 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 时选择每个属性。如果我直接同步我也会遇到问题,我也会丢失类函数(因为 firebase 对象在原型中有自己的一组函数)。
有没有办法避免按属性选择属性,或者有更好的方法来处理将 Firebase 对象与 Typescript 同步?
【问题讨论】:
标签: angular typescript firebase firebase-realtime-database angularfire2