从angularfire 2可观察

时间:2016-06-24 16:28:58

标签: javascript angular angularfire firebase-realtime-database rxjs

我在理解如何处理从angularfire 2可观察对象发出的对象流时遇到一些问题。

看看这个例子:

// create observable
var observalbe = Rx.Observable.range(1, 3);

// Prints out each item
var subscription = observalbe.subscribe(
  x => console.log(x)
);

这将输出:

// 1
// 2
// 3

根据我的理解,这是我在订阅观察时所期望的行为。

现在我想使用angularfire 2订阅firebase上的实时数据库集合:

// af is an instance of AngularFire-Service that is injected in the constructor
var observable = af.database.list('/items');

observable.subscribe(
    x => console.log(x)
);

我期待的是,我的箭头函数将被调用此集合中存在的每个对象,并且每次将新项目添加到firebase集合时也会调用它。

相反,箭头函数只调用一次,并给出一个包含所有对象的数组。将新对象添加到集合时,将再次调用箭头函数,并再次传递整个集合,而不是仅传递新对象。

我在这里做错了吗?在我的情况下,我非常希望为集合中的每个项目调用箭头函数。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

这实际上取决于你想要做什么,但你可以映射它。

observable.subscribe(x => {
  x.map(y => console.log(y));
});