我是AngularFire + Firebase的新手,我正试图从angularfire2 github做这个教程。
当我执行此代码时:
items: Observable<any[]>;
constructor(db: AngularFireDatabase) {
this.items = db.list('items').valueChanges();
}
在控制台中打印变量this.items,将下面的句子显示为值(I&#39; ve):
Observable {_isScalar: false, source: Observable, operator: MapOperator}
operator
:
MapOperator {project: ƒ, thisArg: undefined}
source
:
Observable {_isScalar: false, _subscribe: ƒ}
_isScalar
:
false
__proto__
:
Object
我的问题是,数据库中的数据在哪里?我已经创建了一个包含一些数据的数据库来执行此操作,但是没有任何来自节点&#39;项目&#39;归还。
提前致谢
我的火力架结构:
{
"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实时数据库
这是rxjs版本的问题。我更新到6.2.0版本,代码工作:)
答案 0 :(得分:1)
首先,您不要在构造函数内部进行查询。保持构造函数简单并使用生命周期钩子或您自己的方法。
我可以看到,items
是一个Observable。但你没有订阅它。您需要订阅items
,或者您可以在模板中使用async
管道。数据将随着时间的推移而得到解决。
在你班上:
this.db.collection("items")
.valueChanges()
.subscribe(res => {})
或在模板中:
<some-component *ngFor="let item of items | async"></some-component>
答案 1 :(得分:0)
尝试使用snapshotChanges()
这是什么? - 您收藏的当前状态。作为DocumentChangeAction []的同步数组返回一个Observable数据。
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