Ошибка при работе с AngularFireList, поиск данных - PullRequest
0 голосов
/ 25 октября 2018

Мне удалось выполнить этого урока для записи данных в мою базу данных Firebase.Однако, следуя этому уроку, я понял, что он использует «FirebaseListObservable», который теперь обновлен до «AngularFireList».Я изменил это, и чтобы заставить это работать, я должен был гарантировать, что я сохранил свою транзакцию как объект в противоположность массиву, который он сделал.

Мой код: transactionRef$: AngularFireList<transaction>

Его код: shoppingItemRef$: FirebaseListObservable<ShoppingItem[]>

Как я уже сказал, это исправило мою ошибку здесь, и мои данные были правильно зарегистрированы в базе данных.Однако, продолжая изучать руководства и пытаясь добиться извлечения данных, я быстро получил эту ошибку:

Ошибка: InvalidPipeArgument: '[объект объекта]' для канала 'AsyncPipe'

HTML

<ion-content padding>
    <ion-list>
        <ion-item *ngFor="let transaction of transactionRef$ | async">
            <h2>Currency: {{transaction.transactionCurrency}}</h2>
            <h3>Amount: {{transaction.transactionAmount}}</h3>
            <h4>Receiver: {{transaction.transactionReceiver}}</h4>
        </ion-item>
    </ion-list>
</ion-content>

TS

import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';

import { AngularFireDatabase, AngularFireList } from 'angularfire2/database'; 
import { transaction } from '../../models/transaction/transaction.interface';

@Component({
  selector: 'page-view',
  templateUrl: 'view.html',
})
export class ViewPage {

  transactionRef$: AngularFireList<transaction>

  constructor(public navCtrl: NavController,public navParams: NavParams, private database: AngularFireDatabase) {

    this.transactionRef$ = this.database.list('transaction');
  }
}

Чтобы исправить это, я изменил эту строку: <ion-item *ngFor="let transaction of transactionRef$ | async">

На: <ion-item *ngFor="let transaction of transactionRef$">

Однако, это дало мнеследующая ошибка:

Ошибка: не удается найти другой поддерживающий объект '[object Object]' типа 'object'.NgFor поддерживает только привязку к итерируемым объектам, таким как массивы.

После прочтения этих двух ошибок становится ясно, что ошибка связана с несовместимыми типами объекта и массива.Однако я не знаю, как это исправить.Я прочитал несколько постов с людьми, имеющими эти две ошибки, но большинство либо работает с JSON (я не), либо использую «FirebaseListObservable» и поэтому могу исправить их, либо изменив его с объекта на массив, либо пропустив«| aysnc», ни один из которых не работает для меня.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 октября 2018

Если вы хотите получить Observable<Response> с AngularFireList с 5.x и далее, используйте функцию valueChanges().

this.transactionRef$ = this.database.list('transaction').valueChanges();

См. - https://github.com/angular/angularfire2/blob/master/docs/version-5-upgrade.md#50

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...