Angularfire2 запросить список - PullRequest
0 голосов
/ 15 мая 2019

Я не могу сделать простой запрос списка с AngularFire2.Это структура моей базы данных.

database structure

Каждое число имеет объект внутри с нужными полями.

Запрос объекта даетмне правильный результат таким образом:

db.object('whatevernumber').valueChanges().subscribe(items => {
      console.log(items);
    });

и я получаю следующее, что правильно enter image description here

Но я хочу, чтобы все объекты находились под"playas-espana" как массив.Я пытался с чем-то вроде этого без удачи.

 items: Observable<any[]>;
  constructor(db: AngularFireDatabase) {
    this.items = db.list('/playas-espana').valueChanges();
  }

Как это можно сделать?Заранее спасибо!

Обновлено: здесь более ясно, где находится playas-espana:

enter image description here

enter image description here

1 Ответ

0 голосов
/ 15 мая 2019

Эта строка:

db.list('/playas-espana').valueChanges().subscribe(items => { 
    console.log(items); 
});

вернет вам коллекцию объектов, все дочерние узлы с уникальными ключами, такими как

3291 :{}
3XXX :{}
3X54 :{}

Таким образом, вам нужно получить каждый ключ объекта для доступа к конкретному объекту из this.items

private list = any[] = [];


db.list('/playas-espana').valueChanges().subscribe(items => { 
  if(items) {
     let keys = Object.keys(items);
     keys.forEach(element => {
        let obj = items[element];
        this.list.push(obj);
     }
     console.log(list); // Use it anywhere
  }
});

EDIT:

private list = any[] = [];

db.ref('/playas-espana').once('value', (snapshot) => {
     var items = snapshot.val();
     if (items != null) {
          Object.keys(items).forEach(element => {
          let item = items[element];
          this.list.push(item);
        });
     }
});
...