【问题标题】:Angularfire2 query a listAngularfire2 查询列表
【发布时间】:2019-05-15 22:27:43
【问题描述】:

我无法使用 AngularFire2 进行简单的列表查询。 这是我的数据库的结构。

每个数字都有一个包含所需字段的对象。

以这种方式查询对象会给我正确的结果:

db.object('whatevernumber').valueChanges().subscribe(items => {
      console.log(items);
    });

我得到以下信息,这是正确的

但我想要的是将“playas-espana”下的所有对象作为一个数组。 我已经尝试过这样的事情,但没有任何运气。

 items: Observable<any[]>;
  constructor(db: AngularFireDatabase) {
    this.items = db.list('/playas-espana').valueChanges();
  }

怎么可能呢?提前致谢!

更新: 这里更清楚 playas-espana 的位置:

【问题讨论】:

  • 这个this.items = db.list('/playas-espana').valueChanges();给你什么?
  • 一个空数组:[ ]
  • @CarlosHernándezGil 我认为您需要订阅valueChanges() 方法
  • 是的,我已经做到了:db.list('/playas-espana').valueChanges().subscribe(items => { console.log(items); });
  • 根节点下是playas-espana吗?

标签: javascript angular firebase firebase-realtime-database angularfire2


【解决方案1】:

这一行:

db.list('/playas-espana').valueChanges().subscribe(items => { 
    console.log(items); 
});

将返回对象集合,所有子节点及其唯一键,如

3291 :{}
3XXX :{}
3X54 :{}

因此您需要获取每个对象键才能从this.items 访问特定对象

private list = any[] = [];


db.list('/playas-espana').valueChanges().subscribe(items => { 
  if(items) {
     let keys = Object.keys(items);
     keys.forEach(element => {
        let obj = items[element];
        this.list.push(obj);
     }
     console.log(list); // Use it anywhere
  }
});

编辑:

private list = any[] = [];

db.ref('/playas-espana').once('value', (snapshot) => {
     var items = snapshot.val();
     if (items != null) {
          Object.keys(items).forEach(element => {
          let item = items[element];
          this.list.push(item);
        });
     }
});

【讨论】:

  • db.list('/playas-espana').valueChanges().subscribe(items => { console.log(items); });只返回一个空数组:[]
  • @PreshantPimpale 现在 snapshot.val() 返回 null
  • @CarlosHernándezGil 应用程序中还有其他查询吗?
  • ,不,唯一的一个是对象查询。我已经尝试了很多东西。我已经从 JSON 文件中手动导入了数据库,它生成了数字,也许我应该以编程方式加载数据库以便在 firebase 中获取典型的字符串“key”
猜你喜欢
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2017-01-30
相关资源
最近更新 更多