簡體   English   中英

如何在本機反應中訪問從 firebase 數據庫檢索的完整數組?

[英]How to access a full array retrived from firebase database in react native?

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);
    });
  });
};

然后在調用 function 時執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM