gpt4 book ai didi

javascript - 在javascript中运行时动态从firebase实时数据库获取数据

转载 作者:行者123 更新时间:2023-12-02 23:48:51 27 4
gpt4 key购买 nike

我遇到以下问题:我想在运行时从 Firebase 的特定节点获取数据。它应该显示之前选择的玩家的“统计数据”。现在我可以在开始时使用 on() 来获取所有数据,但我想通过仅在需要时下载播放器上的数据来保存数据传输,所以我尝试像这样使用一次:

    var firebaseRef = firebase.database().ref();

function getScoresOfPlayer(player) {
console.log(player);
var selectedPlayerScores = [];

firebaseRef.once('value').then(function(snap) {
snap.child('scores').child('thierschi').forEach(function(child) {
selectedPlayerScores.push([child.key, child.val()]);
});
});

return selectedPlayerScores;
}

问题在于它在数据加载到数组之前重新运行数组。我也检查了文档,没有找到更好的解决方案。

提前致谢!

最佳答案

这是因为 getScoresOfPlayer 函数在 once() 返回的 Promise 之前返回 selectedPlayerScores方法解决。

您应该在 then() 中包含 return,如下所示:

var firebaseRef = firebase.database().ref();

function getScoresOfPlayer(player) {
console.log(player);
var selectedPlayerScores = [];

return firebaseRef.once('value') //return here as well
.then(function(snap) {
snap.child('scores').child(player).forEach(function(child) { //I guess it should be child(player) and not child('thierschi') here
selectedPlayerScores.push([child.key, child.val()]);
});

return selectedPlayerScores;
});

}

这意味着您必须按如下方式调用函数,因为它将是异步的并返回一个 promise :

getScoresOfPlayer('xyz')
.then(function(selectedPlayerScores) {
....
})

关于javascript - 在javascript中运行时动态从firebase实时数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55726202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com