AngularFire2 - .valueChanges() does not return my data
我是AngularFire + Firebase的新手,我正尝试从angularfire2 github上完成本教程。
当我执行此代码时:
1 2 3 4 | items: Observable; constructor(db: AngularFireDatabase) { this.items = db.list('items').valueChanges(); } |
并在控制台中打印变量this.items,它将下面的句子显示为值(我已经):
1 2 3 4 5 6 7 8 9 10 11 12 13 | Observable {_isScalar: false, source: Observable, operator: MapOperator} operator : MapOperator {project: ?, thisArg: undefined} source : Observable {_isScalar: false, _subscribe: ?} _isScalar : false __proto__ : Object |
我的问题是,数据库中的数据在哪里? 我已经创建了一个包含一些数据的数据库来执行此操作,但是节点" items"中的任何内容均未返回。
提前致谢
我的firebase结构:
1 2 3 4 5 6 7 8 9 10 11 12 | { "items": { "1": { "code":"C001", "name":"client test" }, "2": { "code":"C002", "name":"client test 2" } } } |
编辑:
我的进口:
零件:
1 2 | import { AngularFireDatabase, AngularFireList } from 'angularfire2/database'; import { Observable } from 'rxjs'; |
NgModule:
1 2 3 4 | AngularFireModule.initializeApp({ // data from firebase }), AngularFireDatabaseModule |
我正在使用Firebase实时数据库
解决
rxjs版本存在问题。 我更新到6.2.0版本,并且代码起作用了:)
首先,您无需在构造函数中查询。 使构造函数保持简单,并使用生命周期挂钩或您自己的方法。
如我所见,
在您的课程中:
1 2 3 | this.db.collection("items") .valueChanges() .subscribe(res => {}) |
或在模板中:
1 | <some-component *ngFor="let item of items | async"></some-component> |
尝试使用snapshotChanges()
What is it? - The current state of your collection. Returns an Observable of data as a synchronized array of DocumentChangeAction[].
1 2 3 4 5 6 7 8 | 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