Как получить конкретные значения из списка в AngularFire2 - PullRequest
0 голосов
/ 25 июня 2019

У меня есть база данных Firebase Realtime, которая выглядит следующим образом:

Items:
    Object0:
        value1: "Foo-0"
        value2: "Bar-0"
    Object1:
        value1: "Foo-1"
        value2: "Bar-1"
    ...

... и так далее, уменьшите ее, чтобы упростить.Каждый «ObjectX» содержит точно такую ​​же структуру, как value1, value2 ... Единственная разница между ними - это значения value1, value2.

Мне нужно получить value1 от каждого из объектов.Я могу сделать это сейчас, получая каждый объект и присваивая значения переменной:

import { AngularFireDatabase } from '@angular/fire/database';
...
export class FooComponent{
  objectOne: ObjectModel = <ObjectModel>{};
  objectTwo: ObjectModel = <ObjectModel>{};

  constructor(private firebase: AngularFireDatabase) {}
  ngOnInit() {
    this.firebase
      .object('/Items/Object0')
      .valueChanges()
      .subscribe((objectm: ObjectModel ) => {
        this.objectOne = objectm; }

    this.firebase
      .object('/Items/Object1')
      .valueChanges()
      .subscribe((objectm: ObjectModel ) => {
        this.objectTwo = objectm; }

  valueOne = this.objectOne.value1; //"Foo-0"
  valueTwo = this.objectTwo.value1; //"Foo-1"
  }
}
export interface ObejctModel {
    value1: string;
    value2: string;   
  }

Я думаю, что есть более простой способ сделать это, используя firebase.list('/Items') вместо firebase.object,но я не могу найти решение, которое работает для меня.Может кто-нибудь помочь мне реорганизовать этот код, чтобы он использовал только 1 список вместо 2 (или более) объектов?

Кроме того, я должен присваивать значения переменным в машинописи, а не в обычном {{ items | async }} в шаблонном подходе.

1 Ответ

2 голосов
/ 25 июня 2019

Вы можете сделать следующее:

this.firebase.list('/Items').valueChanges().subscribe(items => {
     console.log(items);  
     items.forEach(values=>{ console.log(values) });
    });

items будет содержать все объекты и значения в вашей базе данных. Вы также можете использовать forEach для итерации внутри массива, таким образом вы можете получить доступ к value1 и value2, не зная ключей (Object0 and Object1).

...