Почему равно числу только найти строки в FireBase?
Я пытаюсь простой запрос:
@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
1 ответ
<number>
является приведением TypeScript. Он статический и просто сообщает TypeScript, что значение number
,
Во время выполнения это ничего не значит. Если this.id
содержит строку, значение которой передается equalTo
будет строка, а не число, и она будет соответствовать "1"
в Firebase.
Если вы хотите убедиться, что значение присвоено equalTo
это число, вы можете сделать что-то вроде этого:
query: {
orderByChild: 'jobId',
equalTo: Number.parseInt(this.id, 10)
}