首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase 5.0 RTD查询数据

Firebase 5.0 RTD查询数据
EN

Stack Overflow用户
提问于 2018-02-12 23:51:38
回答 2查看 57关注 0票数 0

我只是尝试将RTD中的所有数据放入一个数组中进行迭代。下面的代码返回一个未定义的,我遗漏了什么?

代码语言:javascript
复制
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是个不错的选择!

代码语言:javascript
复制
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);
    });
  }
}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-12 23:59:13

您缺少执行顺序。您的console.log将在上一次赋值之后立即执行。订阅将需要一段时间才能交付任何结果。

在订阅中移动您的console.log:

代码语言:javascript
复制
this.cuisines$.subscribe(x =>{
this.cuisines = x;
console.log(this.cuisines); // recieved snapshot
this.cuisines.forEach(i=>console.log(i)); //items themselves
});
票数 0
EN

Stack Overflow用户

发布于 2018-02-13 04:06:42

代码语言:javascript
复制
constructor(private db: AngularFireDatabase) {
    this.cuisines$ = db.list('/cuisines').snapshotChanges();
    this.cuisines$.subscribe(x => {
        this.cuisines = x;
        console.log(this.cuisines);
    }); 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48750359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档