如何从Firebase获取一系列对象?

时间:2015-12-18 14:36:58

标签: javascript firebase

当我从Firebase中的JSON表中获取所有项目时,它会将它们作为对象对象返回。

如何让Firebase返回一个对象数组,以便它与我的ngFor很好地协同工作?

我在Firebase中使用了角度2 beta和打字稿。

这是从Firebase返回的当前结构:

 {{"item": ""}, {"item": ""}, {"item": ""}}

我想要这个(对象数组):

 [{"item": ""}, {"item": ""}, {"item": ""}}]

这是我的firebase代码:

 var query = this.refJob.orderByChild('status').equalTo('Active'); 

query.on('value', (snap) => {               
    resolve(snap.val());    
});

equalTo之后我可以做些什么来将结果组织成数组吗?

当前错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在客户端将它们排序为数组。

var query = this.refJob.orderByChild('status').equalTo('Active'); 
var array = [];
query.on('value', (snap) => {
  snap.forEach((child) => {
     var item = {};
     item._key = snap.key();
     array.push(item));
  });
});

此外,不要使用.on()的承诺,因为.on()可以/将被多次调用,而承诺只会被调用一次。

如果你想使用像Firebase和Angular 2这样的Promises,请查看使用Observables。