Javascript 如何在react native中访问从firebase数据库检索的完整数组?
当我赋值一个数组变量时,比如 temp_arr=snapshot.child(sub_roll.val(); 它返回空数组,但如果控制台记录它,我会得到数组,Javascript 如何在react native中访问从firebase数据库检索的完整数组?,javascript,reactjs,firebase,react-native,firebase-realtime-database,Javascript,Reactjs,Firebase,React Native,Firebase Realtime Database,当我赋值一个数组变量时,比如 temp_arr=snapshot.child(sub_roll.val(); 它返回空数组,但如果控制台记录它,我会得到数组, 请提供帮助。如果将数组变量分配给值事件之外的结果,那么它将返回空值,因为once()是异步的,这意味着它不会等到检索到数据,因此如果执行此操作: REACT NATIVE CODE constructor(props) { super(props); this.state = { day: '',
请提供帮助。如果将数组变量分配给
值
事件之外的结果,那么它将返回空值,因为once()
是异步的,这意味着它不会等到检索到数据,因此如果执行此操作:
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
将返回一个空数组。您需要执行以下操作:
db.ref(date_class).once('value', function(snapshot) {
console.log(snapshot.child(sub_roll).val());
});
temp_arr = snapshot.child(sub_roll).val();
};
db.ref(date_class).once('value', function(snapshot) {
temp_arr = snapshot.child(sub_roll).val();
console.log(temp_arr);
});
};
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);
});
});
};
要在值
事件之外访问它,请执行以下操作:
db.ref(date_class).once('value', function(snapshot) {
console.log(snapshot.child(sub_roll).val());
});
temp_arr = snapshot.child(sub_roll).val();
};
db.ref(date_class).once('value', function(snapshot) {
temp_arr = snapshot.child(sub_roll).val();
console.log(temp_arr);
});
};
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);
});
});
};
然后在调用函数时,执行以下操作:
db.ref(date_class).once('value', function(snapshot) {
console.log(snapshot.child(sub_roll).val());
});
temp_arr = snapshot.child(sub_roll).val();
};
db.ref(date_class).once('value', function(snapshot) {
temp_arr = snapshot.child(sub_roll).val();
console.log(temp_arr);
});
};
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);
});
});
};
嘿,彼得,谢谢你这么快的回复。但是我想在整个程序中使用fiebase提供的数组,在值事件之外,那么我该怎么做呢??