首页 > 解决方案 > 如何使用javascript从firebase中的child检索子值?

问题描述

Firebase 结构

var ref = firebase.database().ref("games/" + gameId + "/patterns");
ref.on("child_changed", function(snapshot){
  var pattern = snapshot.key;
  console.log(pattern);
});

这只是给了钥匙。如果我想提取 status = 0 的玩家名字怎么办

我知道快照包含我需要提取的每个子数据,因为当我使用

var ref = firebase.database().ref("games/" + gameId + "/patterns");
ref.on("child_changed", function(snapshot){
  var value = snapshot.val();

  console.log(value);
});

我得到这样的数据..

快照值

我无法根据需要获取孩子的数据。

标签: javascriptfirebase-realtime-database

解决方案


您提取的值是常规 JavaScript/JSON 对象,因此您可以像访问任何其他 JavaScript 对象一样访问其成员。Firebase 会将您的1, 2,3级别键转换为数组,这意味着它会null在该数组的开头添加一个项目。有关详细信息,请参阅:Firebase 数据库在每个新节点的开头返回 null

要遍历其子节点下的所有子节点,patterns并获取您将执行以下操作status的玩家:0

var ref = firebase.database().ref("games/" + gameId + "/patterns");
ref.on("child_changed", function(snapshot){
  snapshot.forEach(function(child) {
    if (child.val() && child.val().status == "0") {
      console.log(child.val().player);
    });
  });
});

推荐阅读