我只是尝试将RTD中的所有数据放入一个数组中进行迭代。下面的代码返回一个未定义的,我遗漏了什么?
export class AppComponent {
cuisines$: Observable<any[]>;
cuisines: any[];
constructor(private db: AngularFireDatabase) {
this.cuisines$ = db.list('/cuisines').valueChanges();
this.cuisines$.subscribe(x => this.cuisines = x);
console.log(this.cuisines);
}
}更新:我切换到Cloud Firestore,下面的代码返回我的数组。也许Cloud Firestore是个不错的选择!
export class AppComponent {
items: any[];
items$: Observable<any[]>;
constructor(private db: AngularFirestore) {
this.items$ = db.collection('items').valueChanges();
this.items$.subscribe(x => {
this.items = x;
console.log(this.items);
});
}
}

发布于 2018-02-12 23:59:13
您缺少执行顺序。您的console.log将在上一次赋值之后立即执行。订阅将需要一段时间才能交付任何结果。
在订阅中移动您的console.log:
this.cuisines$.subscribe(x =>{
this.cuisines = x;
console.log(this.cuisines); // recieved snapshot
this.cuisines.forEach(i=>console.log(i)); //items themselves
});发布于 2018-02-13 04:06:42
constructor(private db: AngularFireDatabase) {
this.cuisines$ = db.list('/cuisines').snapshotChanges();
this.cuisines$.subscribe(x => {
this.cuisines = x;
console.log(this.cuisines);
});
}https://stackoverflow.com/questions/48750359
复制相似问题