Я использую Firebase с приложением Ionic3 / Angular4.
Данные в базе данных Firebase Realtime выглядят так:
С кодом TSниже, я получаю наблюдаемые данные из Firebase ...
getDishesCategories(uid: string) {
// 1. Fetch an observable AngularFire database snapshot
const afDishCategoriesList$ = this.database.list<DishCategory>(`/users/${uid}/dishcategories/`).snapshotChanges()
// 2. Map the AF list to an observable list of dish category objects
const dishCategoriesList$ = afDishCategoriesList$.pipe(map(changes => {
return changes.map(c => ({
...c.payload.val()
}))
}))
// 3. return the observable list of dish objects
return dishCategoriesList$
}
Это дает мне следующее:
[{
createdDate: "2018-12-14T15:59:25.345Z",
dishes: { ozvawkfci1dadyuibgdy4: {name: "Dish 1", selected: true} },
id: "default01",
name: "All Dishes",
selected: true,
toggleDisabled: true
}]
Проблема в том, что данные «блюд» все еще находятсяполученный в виде JSON, с ключом Firebase и значениями в виде объекта.
Я пытаюсь отобразить объект «тарелки» объектов в стандартный массив, чтобы я мог вызывать такие методы, как .length () дляэто, и использовать индексы, а не ключи.
Это то, что я пытаюсь (тарелки также сопоставлены с массивом):
[{
createdDate: "2018-12-14T15:59:25.345Z",
dishes: [ {name: "Dish 1", selected: true} ],
id: "default01",
name: "All Dishes",
selected: true,
toggleDisabled: true
}]
Мне не нужен ключ Firebase, только стандартный болотный нулевой индексированный массив,с каждым блюдом, сохраненным как объект в каждом индексе.Просто не могу представить, как это сделать, поскольку я новичок в .map (), и я смотрю на это часами!
Может ли кто-нибудь помочь?
Спасибо!