【问题标题】:Realtime database query and react native实时数据库查询和本机反应
【发布时间】:2022-01-07 10:23:05
【问题描述】:

我对执行 firebase 实时数据库查询和本机反应非常陌生。我的实时数据库中有一个用户列表,其中一些用户有一个属性列表,如下所示。我想获取这些属性以及属性的用户,并使用本机反应将其放入数组中。我不确定该怎么做。

这是我目前所拥有的:

  database().ref(`users/`).once(`value`, snapshot =>{
       snapshot.forEach(function(childSnapshot){
            if(childSnapshot.val().properties != null) { 
                                              
            }                                                      
  });

我希望错误显示为:

[{uid1,property1}, {uid1,property2}, {uid2,property1}, {uid2,property2}, {uid2,property3},...., {uidX,propertyX}]

})

【问题讨论】:

  • 您是否尝试过深入childSnapshot 对象以查看嵌套数据?
  • 是的,我看到 childSnapshot.val().properties 给了我属性,但我不知道如何将它推入像 [{uid1,property1}, {uid1,property2} 这样的数组, {uid2,property1}, {uid2,property2}, {uid2,property3},...., {uidX,propertyX}]
  • 您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获取。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。

标签: javascript firebase react-native firebase-realtime-database


【解决方案1】:

我发现在这种情况下,给变量起个好名字真的很有帮助:

database().ref(`users/`).once(`value`, snapshot =>{
  let properties = [];
  snapshot.forEach((userSnapshot) => {
    if (userSnapshot.hasChild("properties")) { 
      userSnapshot.child("properties").forEach((propertySnapshot) => {
        properties.push({ 
          uid: userSnapshot.key,
          property: propertySnapshot.val() 
        })
      })
    }                                                      
  });
  console.log(properties);
});

【讨论】:

    猜你喜欢
    • 2017-08-05
    • 2019-03-19
    • 2021-12-09
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多