首页 > 解决方案 > 无法使用 firebase 实时数据访问我的数组中的数据

问题描述

所以我在我的数据库中创建了 2 个播放列表,其中包含 playlistName 和 id。我正在尝试显示我创建的播放列表列表。我能够 Console.log(playlists) 获取包含正确数据的 2 个对象的数组。但我无法访问数组中的对象。我尝试了 forEach、map,即使只是查看第一个索引,我总是在控制台中未定义。希望得到一些帮助。查看控制台结果片段的图像

function getPlayLists(b) {
  firebase.auth().onAuthStateChanged(function (user) {
    if (user) {
      var uid = auth.currentUser.uid;
      var playlists = [];
      database.ref(uid).on("value", function (snapshot) {
        snapshot.forEach(function (childSnapshot) {
          playlists.push({
            playlistName: childSnapshot.val().name,
            id: childSnapshot.val().idKey,
          });
        });
      });
      console.log(playlists);
      console.log(playlists[0]);
    } else {
      console.log("No user is signed in.");
    }
  });
}

在此处输入图像描述

标签: javascriptfirebasegoogle-chrome-extension

解决方案


您在每次更新时将一个函数绑定到值,因此在定义的回调中记录这些值并使用映射函数从快照中获取值

  database.ref(uid).on("value", (snapshot) => {
    const playlists = snapshot.map((childSnapshot) => ({
      playlistName: childSnapshot.val().name,
      id: childSnapshot.val().idKey
    }));
    console.log(playlists);
    console.log(playlists[0]);
  });

推荐阅读