将firebase响应映射到类
Posted
技术标签:
【中文标题】将firebase响应映射到类【英文标题】:Map firebase response to class 【发布时间】: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);
);
我看到以下内容:
而我应该看到两个用户的条目,即名字、性别、位置等。
有人可以解释为什么这个映射没有按照我想象的方式工作吗?
【问题讨论】:
@PankajParkarbody.json is not a function
是我尝试您的建议时遇到的错误。我会指出,当我进入这个函数时,我可以看到 new Results()
被我传入的值填充...
【参考方案1】:
使所有Results
类成员public
可以通过对象实例访问。目前你只是将参数传递给Results
constructor
,它们没有分配给任何类成员。
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 很高兴为您提供帮助,谢谢 :)以上是关于将firebase响应映射到类的主要内容,如果未能解决你的问题,请参考以下文章
尝试将 AlamoFire JSON 响应映射到类并接收“致命错误:在展开可选时意外发现 nil”
将 Firebase 身份验证用户映射到 Firestore 文档
如何将映射文件上传到 Firebase Crashlytics?