AngularFire2 - .valueChanges () не возвращает мои данные - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в AngularFire + Firebase и пытаюсь сделать урок из angularfire2 github.

Когда я делаю этот код:

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

И печатаю в консолипеременная this.items показывает следующее предложение в виде значения (имею):

Observable {_isScalar: false, source: Observable, operator: MapOperator}
operator
:
MapOperator {project: ƒ, thisArg: undefined}
source
:
Observable {_isScalar: false, _subscribe: ƒ}
_isScalar
:
false
__proto__
:
Object

Мой вопрос: где данные из базы данных?Я создал базу данных с некоторыми данными для этого, но из узла 'items' ничего не возвращается.

Заранее спасибо

моя структура firebase:

{
    "items": {
        "1": {
            "code": "C001",
            "name": "client test"
        },
        "2": {
            "code": "C002",
            "name": "client test 2"
        }
    }
}

Редактировать:

Мой импорт:

Компонент:

import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { Observable } from 'rxjs';

NgModule:

AngularFireModule.initializeApp({
      // data from firebase
    }),
    AngularFireDatabaseModule

Я использую базу данных Firebase Realtime


Решено

Проблема с версией rxjs.Я обновил до версии 6.2.0 и код работал:)

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Во-первых, вы не запрашиваете внутри конструктора.Оставьте конструктор простым и используйте хуки жизненного цикла или свои собственные методы.

Как я вижу, items - это наблюдаемая.Но вы не подписались на это.Вам нужно подписаться на items или вы можете использовать async pipe в своем шаблоне.Данные будут обработаны с течением времени.

В вашем классе:

this.db.collection("items")
  .valueChanges()
  .subscribe(res => {})

Или в шаблоне:

<some-component *ngFor="let item of items | async"></some-component>
0 голосов
/ 24 мая 2018

попробуй с snapshotChanges ()

Что это?- Текущее состояние вашей коллекции.Возвращает Observable данных в виде синхронизированного массива DocumentChangeAction [].

this.db
  .collection("azucar_nacional")
  .snapshotChanges()
  .subscribe(e => {
    e.forEach(elem => {
      console.log(elem.payload.doc.data());
    });
  });

https://github.com/angular/angularfire2/blob/master/docs/firestore/collections.md

...