【问题标题】:Map firebase response to class将firebase响应映射到类
【发布时间】:2017-08-30 21:16:55
【问题描述】:

我有以下课程:

import { Hobbies } from './hobbies';

export class Results {

constructor(
    $key: string,
    first_name: string,
    gender: string,
    intent: string,
    seeking: string,
    training: string,
    latitude: string,
    longitude: string,
    location_desc: string,
    state: string,
    hobbies: Hobbies[],
    cloud_Id: string) {

}

static fromJsonList(array): Results[] {
    return array.map(json => Results.fromJson(json))
}

static fromJson({ $key, cloud_Id, first_name, gender, hobbies, intent, latitude, location_desc, longitude, seeking, state, training }): Results {

    debugger;
    return new Results(
        $key,
        first_name,
        gender,
        intent,
        seeking,
        training,
        latitude,
        longitude,
        location_desc,
        state,
        hobbies,
        cloud_Id);
}


}

我拨打Firebase 并检索状态与我输入的位置匹配的用户列表,如下所示:

getSearchResults(location: string): Observable<Results[]> {

        return this.af.database.list('/user/', {
            query: {
                orderByChild: 'state',
                equalTo: location
            }
        }).map(Results.fromJsonList);
}

然后我.map回复(Results.fromJsonList);

static 方法fromJson 中,当我点击debugger 断点并检查传递的值时,它们都是正确的。

但是,当我在组件中记录结果时:

getSearchResultsComponent(gender: string, seeking: string, intent: string, location: string, hobbies?: string) {

  this.searchSubscription = this.searchService.getSearchResults(location).subscribe(results => {
   console.log(results);
  });

}

我看到以下内容:

而我应该看到两个用户的条目,即名字、性别、位置等。

有人可以解释为什么这个映射没有按照我想象的方式工作吗?

【问题讨论】:

  • @PankajParkar body.json is not a function 是我尝试您的建议时遇到的错误。我会指出,当我进入这个函数时,我可以看到 new Results() 被我传入的值填充...

标签: angular typescript firebase angularfire2


【解决方案1】:

使所有Results 类成员public 可以通过对象实例访问。目前你只是将参数传递给Resultsconstructor,它们没有分配给任何类成员。

export class Results {

    constructor(
        public $key: string,
        public first_name: string,
        public gender: string,
        public intent: string,
        public seeking: string,
        public training: string,
        public latitude: string,
        public longitude: string,
        public location_desc: string,
        public state: string,
        public hobbies: Hobbies[],
        public cloud_Id: string
    )
    //other code
}

【讨论】:

  • @CodeRatchet 很高兴为您提供帮助,谢谢 :)
猜你喜欢
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2021-05-23
  • 2021-10-13
  • 1970-01-01
  • 2016-06-05
  • 2018-02-06
  • 2021-12-04
相关资源
最近更新 更多