javascript - 无法使用 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.");
}
});
}
解决方案
您在每次更新时将一个函数绑定到值,因此在定义的回调中记录这些值并使用映射函数从快照中获取值
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]);
});
推荐阅读
- css - 如何清除 iphone 6 上的缓存以重新加载 css 文件
- node.js - AzureDevOps 管道 - Nightwatch selenium 独立安装问题 - 无法运行 npm run 'e2e-setup'(包含 'selenium-standalone install')
- aws-lambda - 无服务器 - 发电机流 - 如何设置destinationConfig?
- python - 如何在计算差异之前包含列表的第一个元素
- node.js - 如何在猫鼬中返回一个 json 对象以及总数?
- c - 对给定的 tid 使用 PTRACE_GET_THREAD_AREA
- javascript - 根据单选按钮检查跳到特定步骤
- android - 使用便宜的安卓手机制作生物识别考勤系统
- python - Python 3 中的代理类
- c# - 在 ASP.NET MVC 中使用 SqlBulkCopy 在远程 SQL Server 上插入记录