gpt4 book ai didi

javascript - 如何在 native react 中访问从 firebase 数据库检索到的完整数组?

转载 作者:行者123 更新时间:2023-11-30 19:06:47 25 4
gpt4 key购买 nike

REACT NATIVE CODE
constructor(props) {
super(props);
this.state = {
day: '',
month: '',
year: '',
asked_dat: '',
asked_clas: 'CLASS',
asked_su: 'SUBJECT'
};
}

set_date = () => {
this.setState({
asked_dat: this.state.day + '-' + this.state.month + '-' + this.state.year
});
};
retrieve_data = () => {
var asked_date = this.state.asked_dat;
var asked_class = this.state.asked_clas + '/';
var asked_sub = this.state.asked_su;
var date_class = asked_date + '/' + asked_class;
var sub_roll = asked_sub + '/' + 'PRESENT_ROLL_NO';

console.log(date_class + sub_roll);
db.ref(date_class).once('value', function(snapshot) {
console.log(snapshot.child(sub_roll).val());
});
};

当我分配一个数组变量时temp_arr = snapshot.child(sub_roll).val();它返回空数组,但如果控制台记录它,我得到数组,请帮忙。

最佳答案

如果您在 value 事件之外将一个数组变量分配给结果,那么它将返回空,因为 once() 是异步的,这意味着它不会等到检索数据,因此如果您这样做:

    db.ref(date_class).once('value', function(snapshot) {
console.log(snapshot.child(sub_roll).val());
});
temp_arr = snapshot.child(sub_roll).val();
};

temp_arr 将返回一个空数组。您需要执行以下操作:

    db.ref(date_class).once('value', function(snapshot) {
temp_arr = snapshot.child(sub_roll).val();
console.log(temp_arr);
});
};

要在 value 事件之外访问它,请执行以下操作:

retrieve_data = () => {
return new Promise((resolve, reject) => {
var asked_date = this.state.asked_dat;
var asked_class = this.state.asked_clas + '/';
var asked_sub = this.state.asked_su;
var date_class = asked_date + '/' + asked_class;
var sub_roll = asked_sub + '/' + 'PRESENT_ROLL_NO';

console.log(date_class + sub_roll);
db.ref(date_class).once('value', function(snapshot) {
temp_arr = snapshot.child(sub_roll).val();
resolve(temp_arr);
});
});
};

然后在调用该函数时执行以下操作:

retrieve_data().then((value) => {
console.log(value); //returns array
});

关于javascript - 如何在 native react 中访问从 firebase 数据库检索到的完整数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58900126/

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