【问题标题】:How To Efficiently Extract Certain Information From A POJO如何有效地从 POJO 中提取某些信息
【发布时间】:2016-12-24 12:15:54
【问题描述】:

我经常使用 firebase,并试图从数据库中加载某些信息。原始数据来自查询,并在 POJO 中返回给我。返回原始数据时,控制台会打印:

-KhQ76OEK_848CkIFhAq: "-JhQ76OEK_848CkIFhAq"
-OhQ76OEK_848CkIFhAq: "-LhQ76OEK_848CkIFhAq"

我需要做的是分别获取每个值(-JhQ76OEK_848CkIFhAq 和 -LhQ76OEK_848CkIFhAq),并为每个值再次查询实时数据库。我可以管理这方面,但我似乎无法弄清楚如何分离这些值。

我已经尝试通过以下方式获得单个输出: console.log(vals[0]) 但它只是返回未定义,并且将字符串按" 拆分对于大型数据集来说效率非常低。有什么想法吗?

【问题讨论】:

  • 你的 POJO 是什么样的? {'-KhQ76OEK_848CkIFhAq": "-JhQ76OEK_848CkIFhAq", "-OhQ76OEK_848CkIFhAq": "-LhQ76OEK_848CkIFhAq"}
  • 您可以在问题中包含查询吗?想必您已经通过在查询的快照结果上调用val() 获得了该对象。
  • @Shaanimal 是的,没错
  • @cartant 是的,这正是我所做的,这就是查询返回的内容

标签: javascript html firebase firebase-realtime-database


【解决方案1】:

要访问这些值,您可以使用快照的forEach 方法迭代快照的子项。可以使用key 属性和val() 方法获取子项的键和值:

firebase.database()
  .ref("some/path")
  .once("value")
  .then((snapshot) => {
    snapshot.forEach((childSnapshot) => {
      console.log(childSnapshot.key);   // The child's key: e.g. "-KhQ76OEK_848CkIFhAq"
      console.log(childSnapshot.val()); // The child's value: e.g. "-JhQ76OEK_848CkIFhAq"
    });
  });

【讨论】:

    【解决方案2】:

    为了解决这个问题,我所做的只是使用以下代码将返回的object 转换为array

    var Array = Object.keys(datalist).map(function(k) { return datalist[k] });
    

    就像一个魅力,我现在可以为Array运行一个简单的for循环

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多