在angularfire2版本5中按键获取对象

时间:2018-01-20 16:53:48

标签: angularfire2

"items": {
  "a" : {
   "size" : "small",
   "text" : "small thing"
  },
  "b" : {
   "size" : "medium",
   "text" : "medium sample"
  },
  "c" : {
   "size" : "large",
   "text" : "large widget"
  }
}

假设我有上述数据。我想从组件文件中的列表中获取关键 a 的数据,而不会遍历整个列表。我试过从文档中。但是找不到这种要求。此平台上的解决方案与5.0之前的早期版本相关。有谁知道我们怎么能实现它?

1 个答案:

答案 0 :(得分:1)

我想你指的是实时数据库,因为你提到了" items list",在FireStore中它是集合。

要获取对象,请使用AngularFireDatabase.object()函数。

示例:

// Get an object, just the data (valuesChanges function), only once (take(1) function)

import 'rxjs/add/operator/take';

let subscribe = AngularFireDatabase.object('items/a').valueChanges().take(1).subscribe(
  data =>{
    console.log(data);
  }
);

另一种方法是在订阅返回中调用subscrible.unsubscribe()函数,而不是使用take()函数:

let subscribe = AngularFireDatabase.object('items/a').valueChanges().subscribe(
  data =>{
    console.log(data);
    subscribe.unsubscribe();
  }
);

上面的示例在执行时获取数据,而不是在此之后获得对象发生的更改。

// Get an object, just the data (valuesChanges function), and all subsequent changes
let subscribe = AngularFireDatabase.object('items/a').valueChanges().subscribe(
  data =>{
    console.log(data);
  }
);

以上示例在每次对象发生更改时获取数据。

我测试了两个例子。

您可以阅读AnglarFire2第5版,herehere 您可以阅读有关从对象here检索数据的信息。