我連接到Firebase
並從給定位置檢索數據,我想要做的是遍歷snapshot.val()
構建和Array
,通過它返回Array
,然後循環的component.html
並建立一個Dropdown
。返回數組
目前我有困難搞清楚這種服務方法的語法,這是我目前的代碼。 - 這是從app.component.ts
內ngOnInit()
getExerciseOptions(): Array<Exercise> {
const items: Exercise[] = [];
this.exerciseDbRef2.on("value", (snapshot) => {
snapshot.forEach((snap) => {
items.push({
id: snap.key,
description: snap.val().description
});
return false;
});
});
}
所以this.exerciseDbRef2
點內Firebase
表名爲如下所示:
private exerciseDbRef2 = this.fire.database.ref('/exercise_description');
目前我收到的錯誤是
A function whose declared type is neither 'void' nor 'any' must return a value.
哪我明白了,所以當我將return false
更改爲return items
時,新的錯誤是:
Argument of type '(snap: DataSnapshot) => Exercise[]' is not assignable to parameter of type '(a: DataSnapshot) => boolean'.
Type 'Exercise[]' is not assignable to type 'boolean'.
我已經看過用child_added
但是從我的理解,這將被稱爲每當一個新的子項添加到該位置,這是不是我要找的時間。在這個位置的孩子不會改變,也不會被添加。 - 也許我錯誤地解釋了'child_added'?
我對Firebase
比較陌生,所以我在學習曲線的開頭,所以請裸露出來,我還想提一下,如果我目前這樣做的方式不正確,請帶上它我的注意力。
所以澄清:連接到Firebase
,通過snapshot
檢索給定的位置即exercise_description表,循環中的所有兒童,建設Array
並將其返回。
然後在組件循環中通過Array
並構建Dropdown
。
有人可以請解釋我如何去基於snapshot.val()
退回Array
?
該代碼片段看起來並不完整。你把零碎切碎了嗎?該錯誤意味着'on'回調正在返回一個數組。並且'getExerciseOptions'函數被聲明爲返回'Array',但不返回任何內容。 –
cartant
@cartant感謝您的幫助,它的正確代碼片段。關於如何返回使用從Firebase返回的值構建的數組,我對這個語法感到困惑。理想情況下,我想從這個函數返回'Array' –