我只是试图将我的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);
});
}
}
答案 0 :(得分:0)
您缺少执行顺序。 您的console.log在上一次分配后立即执行。在订阅将提供任何结果之前需要一些时间。
将你的console.log移到subscribe:
中this.cuisines$.subscribe(x =>{
this.cuisines = x;
console.log(this.cuisines); // recieved snapshot
this.cuisines.forEach(i=>console.log(i)); //items themselves
});
答案 1 :(得分:0)
constructor(private db: AngularFireDatabase) {
this.cuisines$ = db.list('/cuisines').snapshotChanges();
this.cuisines$.subscribe(x => {
this.cuisines = x;
console.log(this.cuisines);
});
}