无法使用 firebase 实时数据访问我的数组中的数据
Can not access the data in my array using firebase Realtime data
所以我在我的数据库中创建了 2 个播放列表,播放列表名称和 ID。我正在尝试显示我创建的播放列表列表。我能够 Console.log(playlists) 得到我的 2 个对象的数组,其中包含正确的数据。但我无法访问数组中的对象。我尝试了 forEach、map,即使只是查看第一个索引,我的控制台中也总是未定义。会喜欢一些帮助。查看控制台结果的图片 snipit
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.");
}
});
}
enter image description here
您在每次更新值时都绑定了一个函数,因此在定义的回调中记录这些值并使用映射函数从快照中获取值
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]);
});
您的 console.log 语句在用数据填充播放列表之前被调用。将 console.log 移动到传递给 database.ref(uid).on 方法的函数中
所以我在我的数据库中创建了 2 个播放列表,播放列表名称和 ID。我正在尝试显示我创建的播放列表列表。我能够 Console.log(playlists) 得到我的 2 个对象的数组,其中包含正确的数据。但我无法访问数组中的对象。我尝试了 forEach、map,即使只是查看第一个索引,我的控制台中也总是未定义。会喜欢一些帮助。查看控制台结果的图片 snipit
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.");
}
});
}
enter image description here
您在每次更新值时都绑定了一个函数,因此在定义的回调中记录这些值并使用映射函数从快照中获取值
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]);
});
您的 console.log 语句在用数据填充播放列表之前被调用。将 console.log 移动到传递给 database.ref(uid).on 方法的函数中