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/