【问题标题】:Iterating over $firebaseArray and $firebaseObject遍历 $firebaseArray 和 $firebaseObject
【发布时间】:2016-04-16 00:05:41
【问题描述】:

我正在尝试迭代从我的 Firebase 获取的 firebaseObjectfirebaseArray,但它们看起来不像普通的 javascript objectsarrays

我的数据以以下形式存储

    'mainKey': {
      'key1':'value1',
      'key2':'value2'
   },
   'mainkey2': {
      'key3':'value3'
   }

我试过下面的代码

   var firebaseRef = new Firebase("https://<my-app>.firebaseio.com/);
    var fbArray = $firebaseArray(firebaseRef);
    var fbObject = $firebaseObject(firebaseRef);
    for(var i=0;i<fbArray.length;i++){
        console.log(fbArray[i]);
    }
   console.log(fbObject);
   console.log(fbObject.mainkey);
   console.log(fbArray.length);

这会在控制台中提供以下输出

Object { $$conf={...},  $id="test",  $priority=null,  more...} 

undefined

0

虽然返回的对象具有mainkey 属性,但我无法访问它。为什么会发生这种情况?我应该如何迭代它们?

【问题讨论】:

  • 有一些库可用于处理 Firebase 和不同的语言,例如 AngularFire for AngularJS 和 Firebase。甚至 Firebase 上的文档也表明对象/数组不是典型的 JavaScript。
  • 我也检查了 Angularfire 文档,但我在其中找不到任何解决方案。

标签: firebase


【解决方案1】:

这里有你需要知道的信息

$firebaseArray 服务接受 Firebase 引用或 Firebase 查询,并 返回一个 JavaScript 数组,其中包含提供的 Firebase 中的数据 参考。请注意,数据将不会立即可用,因为 检索它是一个异步操作。 您可以使用 $loaded() 承诺在数据加载时收到通知。

https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebasearray

fbArray.$loaded(function() {
      //here you can iterate over your object
    });

【讨论】:

    【解决方案2】:

    您可以尝试for..in 循环来迭代对象。 下面是一个例子:

    for (var key in fbObject) {
      console.log(fbObject[key]); // You could use this method with all objects in JS
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-20
      • 2017-08-14
      • 2015-12-09
      • 2016-11-25
      • 2017-09-04
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多