我正在尝试一个简单的查询:
@Input('jobId') id: number;
comments: FirebaseListObservable<any>;
this.comments = this.af.database.list('comments/jobComments', {
query: {
orderByChild: 'jobId',
equalTo: <number>this.id
}
}).map((array) => array.reverse()) as FirebaseListObservable<any[]>;
我有一些jobId是字符串,其余的是数字。我很快就会把它们全都搞定。但由于某种原因,这只返回其jobId格式化为字符串的结果,而不返回jobId为整数的任何人。
如果他们的jobId在FireBase中显示为
,则上述代码仅返回注释jobId: "1"
但不是这样:
jobId: 1
答案 0 :(得分:1)
<number>
是一个TypeScript强制转换。它是静态的,只是告诉TypeScript该值是number
。
在运行时,这是无关紧要的。如果this.id
包含字符串,则传递给equalTo
的值将是一个字符串 - 而不是一个数字 - 它只会与Firebase中的"1"
匹配。
如果您想确保分配给equalTo
的值是一个数字,您可以这样做:
query: {
orderByChild: 'jobId',
equalTo: Number.parseInt(this.id, 10)
}