gpt4 book ai didi

javascript - 遍历 Javascript 对象时遇到问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:12:20 27 4
gpt4 key购买 nike

我在访问 JS 对象中的数据时遇到了问题。收集数据(来自 Firebase 数据库)的代码如下:

var get_user_data = function() {
...
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
console.log(key, value);
});
store_user_char(user_char);
}

var store_user_char = function(user_char) {
char_obj = user_char;
console.log(char_obj);
for(var key in char_obj){
if(char_obj.hasOwnProperty(key)){
console.log(key);
}
}

它应该(理论上)从 Firebase 数据库创建 JS 对象,并且在将数据写入 user_char 时,它会将每个键:对象对打印到控制台中。之后,当 store_user_char() 执行时,它还应该打印出之前的每个键。

第一个 console.log() 在写入 user_char 时成功输出每个键:对象对。第二个 console.log() 成功输出对象,我什至可以单击并编辑其中的所有元素,在 Firefox 控制台中看起来像这样:

Object Properties

然而,第三个 console.log() 永远不会执行,并试图通过访问一个键从 char_obj 获取任何数据,如下所示:

char_obj['KSxpjEvkCOL6ugGkxqn']

什么都不做并返回undefined。奇怪的是,在 Firefox 中手动单击对象允许我解析每个子元素,因此我知道数据存储在某处。

我唯一能想到的是来自数据库的请求可能需要很长时间才能返回数据,但即便如此,store_user_char() 函数应该在数据存储到 user_char 之后执行,所以我非常困惑至于为什么我的代码似乎无法遍历对象。

我觉得好像我遗漏了一些关于 JS 对象的东西,这就是为什么我的代码找不到数据的原因,但我在试图弄清楚发生了什么以及我如何可以访问数据。

如有任何帮助,我们将不胜感激!

编辑:get_user_data 的完整定义如下:

// Global variables
var user_email;
var user_char = {};
var uid;

var get_user_data = function() {
// Authenticate current user
var user = firebase.auth().currentUser;

// Get User Email and char list
if (user != null) {
user_email = user.email;
uid = firebase.auth().currentUser.uid;
var getChar = firebase.database().ref('/users/' + uid + '/chars/').orderByKey();
getChar.on('value', function(snapshot){
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
});
});
store_user_char(user_char);
}
}

最佳答案

getChar.on('value', function(snapshot){
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
});
});

会被异步调用,put function call store_user_char(user_char);在 getChar 的回调中,您的问题将得到解决。喜欢:

getChar.on('value', function(snapshot){
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
});
store_user_char(user_char);
});

关于javascript - 遍历 Javascript 对象时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086525/

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