首页 > 解决方案 > React Native 使用 Firebase 从 JSON 树中获取特定的子值

问题描述

所以我正在使用 React Native 和 firebase,我在 firebase 中有一个 JSON 树,其结构如下

{"Message"
  {"-LCi0UViBvOn4eh9cqzW":
    {"contents":"hello",
     "timestamp":1526559275118}
  }
}

我正在尝试检索消息的内容并将其存储在一个对象中,现在只需将该值读取到控制台。这是我尝试这样做的代码:

const firebaseApp = firebase.initializeApp(firebaseConfig);
let db = firebaseApp.database();
let ref = db.ref("/message");

尝试读取:

 componentDidMount() {
     ref.on("value", function(snapshot) {
      var messageText = JSON.stringify(snapshot.val());
      console.log(messageText);
      var parsedMessage = JSON.parse(messageText);
      console.log(parsedMessage.contents);
     });
  }

第一个 console.log 给了我以下结果:

{"-LCi0UViBvOn4eh9cqzW":{"contents":"hello","timestamp":1526559275118}}

但是下一个我尝试从已解析对象中读取特定数据的 console.log 总是输出未定义的。

我做错了什么,不允许我从我的 JSON 树中检索特定数据?

标签: javascriptjsonfirebasereact-nativefirebase-realtime-database

解决方案


当您执行第二个 JSON.parse 然后 console.log parsedMessage.contents 时,它实际上嵌套在键中"-LCi0UViBvOn4eh9cqzW",因此您应该这样做console.log(parsedMessage["-LCi0UViBvOn4eh9cqzW"].contents),因为内容键在根元素的值内。


推荐阅读