这是我firebase数据结构,2如何获取用户数据并在html中制作表格

hgc7kmma  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(109)

这是我的数据库结构,我想得到登录用户数据。我想使数据表:列:日期、状态

我还想通过计算成功率和失败率来制作百分比piechart wheel。但无法从firebase获得数据。
我试过了,但是不起作用。我可以成功地登录和注销。我也可以在每个日期在firebase中添加数据。我只是不能获取和显示在表中。下面是我尝试的:'

// Get the user's attendance records
firebase.database().ref("attendance").once("value", function(snapshot) {
  // Get the attendance data
  var attendanceData = snapshot.val();
  var userId = firebase.auth().currentUser.uid;

  // Display the attendance history
  for (var email in attendanceData) {
    var attendance = attendanceData[email][userId];
    if (attendance) {
      for (var date in attendance) {
        var status = attendance[date].status;
        var tr = document.createElement("tr");
        tr.innerHTML = `<td>${date}</td><td>${status}</td>`;
        attendanceHistoryTable.appendChild(tr);
      }
    }
  }
});
djmepvbi

djmepvbi1#

如果我没理解错的话,你有一个数据结构,像这样:

attendance: {
  user: {
    "$uid": {
      "$date": {
        Status: "..."
      }
    }
  }
}

您希望从这里显示当前用户的每个日期的状态。
如果这确实是用例,您可以使用以下方法:

const userId = firebase.auth().currentUser.uid;
const attendanceRef = firebase.database().ref("attendance");
const userRef = attendanceRef.child("users").child(userId);
userRef.once("value", function(userSnapshot) {
  userSnapshot.forEach((dateSnapshot) => {
    const status = dateSnapshot.child("Status").val();
    console.log(`User: ${userSnapshot.key}, Date: ${dateSnapshot.key}, Status: ${status}`);
    ... // TODO: add the data to the HTML as you're already doing
  });
});

我在这里所做的主要更改:

  • 这将仅加载当前用户的数据,而不是所有用户的数据。
  • 此代码使用DataSnapshot的内置forEach操作。
  • 这段代码为变量提供了更有意义的名称,这样就更容易解析正在发生的事情。
  • 这段代码使用"Status"而不是status,因为它也是数据库屏幕截图中的键。

相关问题