首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从AngularFire2中的列表中检索特定值

如何从AngularFire2中的列表中检索特定值
EN

Stack Overflow用户
提问于 2019-06-25 17:33:22
回答 1查看 381关注 0票数 0

我有一个Firebase实时数据库,看起来像这样:

代码语言:javascript
运行
复制
Items:
    Object0:
        value1: "Foo-0"
        value2: "Bar-0"
    Object1:
        value1: "Foo-1"
        value2: "Bar-1"
    ...

..。以此类推,减少它以简化。每个"ObjectX“都包含完全相同的结构,比如value1、value2……它们之间唯一的区别是value1和value2的值。

我需要从每个对象中获取value1。现在,我可以通过获取每个对象并将值分配给一个变量来完成此操作:

代码语言:javascript
运行
复制
import { AngularFireDatabase } from '@angular/fire/database';
...
export class FooComponent{
  objectOne: ObjectModel = <ObjectModel>{};
  objectTwo: ObjectModel = <ObjectModel>{};

  constructor(private firebase: AngularFireDatabase) {}
  ngOnInit() {
    this.firebase
      .object('/Items/Object0')
      .valueChanges()
      .subscribe((objectm: ObjectModel ) => {
        this.objectOne = objectm; }

    this.firebase
      .object('/Items/Object1')
      .valueChanges()
      .subscribe((objectm: ObjectModel ) => {
        this.objectTwo = objectm; }

  valueOne = this.objectOne.value1; //"Foo-0"
  valueTwo = this.objectTwo.value1; //"Foo-1"
  }
}
代码语言:javascript
运行
复制
export interface ObejctModel {
    value1: string;
    value2: string;   
  }

我想有一种更简单的方法可以使用firebase.list('/Items')来代替firebase.object,但是我似乎找不到任何适合我的解决方案。有没有人能帮我重构这段代码,让它只使用一个列表,而不是2个(或更多)对象?

另外,我必须在typescript中将值赋给变量,而不是模板方法中通常的{{ items | async }}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-25 17:49:34

您可以执行以下操作:

代码语言:javascript
运行
复制
this.firebase.list('/Items').valueChanges().subscribe(items => {
     console.log(items);  
     items.forEach(values=>{ console.log(values) });
    });

items将包含数据库中的所有对象和值。您还可以使用forEach在数组中迭代,这样就可以在不知道键(Object0 and Object1)的情况下访问value1value2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56750929

复制
相关文章

相似问题

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