Я могу отображать данные из коллекции firestore, но не могу получить доступ к элементам массива - PullRequest
1 голос
/ 28 мая 2020

Я могу получить поток данных как наблюдаемый из firestore и отобразить эти данные. Однако я не могу найти способ получить доступ к этим данным, чтобы что-то с ними сделать. Это приятно, поскольку данные обновляются автоматически, но я не вижу способа получить доступ к данным в наблюдаемых результатах.

Например, я получаю поток данных через эту функцию в службу.

Функция:

this.projectList = this.FirebaseService.getCollection('projects', 'creatorId', this.userData.uid);

Служба:

getCollection( collection, paramName, paramValue ) {
    return this.afs.collection( collection, ref => ref.where( paramName, '==', paramValue )).valueChanges();
}

Возвращенная коллекция может отображаться в списке или использоваться в раскрывающемся списке, как показано ниже.

<mat-form-field class="w-80-p ml-10-p mt-20">
  <mat-label>Select a version to see the details</mat-label>
  <mat-select  (selectionChange)="onVersionSelected()"
      [(ngModel)]="currentProject.currentVersionId">
       <mat-option *ngFor="let version of (currentProject['versions'] | async); index as i" [value]="version.uid">
        {{i+1}} - {{version.name}}
      </mat-option>
  </mat-select>
</mat-form-field>

Функция than обрабатывает наблюдаемые данные:

onVersionSelected(): void
{
    this.currentProject.versions.forEach((thisVer, index) => {
        if (thisVer.id == this.currentProject.currentVersionId){ this.currentVersion=thisVer; }
    });

}

Проблема в том, что, используя for l oop, я все равно получаю наблюдаемые, а не фактические данные в массиве . Как мне получить доступ к этим данным?

1 Ответ

1 голос
/ 28 мая 2020

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

this.FirebaseService.getCollection(
    'projects', 'creatorId', this.userData.uid).subscribe(data=>{
        var a=data;
    }
);
...