0

インターネットに接続されているFirebaseをチェックするかどうかを確認するためのコードです。しかし、問題は、construct()の前に私がpublic total_downloaded=0と宣言されていても、私のthis.total_downloaded=1は設定できないことを示しています。Firebaseでnullのプロパティ 'variable'を設定できません

enter image description here

なぜそれがそのように起こるのでしょうか?私の機能を使用したり、変数を簡単に設定することはできませんか?

誰かが私を助けることができますか?ありがとう。ここに私のコードは次のとおりです。

public this.total_downloaded = 0; 
//... 
var connectedRef = firebase.database().ref('/.info/connected'); 
connectedRef.once("value", function(snap) { 
    if (snap.val() === true) { 
     firebase.database() 
      .ref("last_update") 
      .once('value', (snap_0) => { 
       if (data.rows.item(0).value != snap_0.val().value) { 
        this.update_hok_baghu(db); 

        var query_insert_last_update = "UPDATE last_update SET value =" + snap_0.val().value + ""; 
        db.executeSql(query_insert_last_update, []).then(() => { 
        }, (error) => { 
         console.log("ERROR on update to last_update: " + JSON.stringify(error)); 
        }); 

       } else { 
        this.total_downloaded = 1; 
       } 
      }); 
    } else { 
     this.total_downloaded = 1; 
    } 
}); 

答えて

2

あなたはコールバックfunction(snap)として通常の関数を使用しています。 else状態のthisは、あなたのクラスではなくコールバック関数を参照しています。

使用矢印機能:

connectedRef.once("value", (snap)=> { 
    if (snap.val() === true) { 
     firebase.database() 
      .ref("last_update") 
      .once('value', (snap_0) => { 
       if (data.rows.item(0).value != snap_0.val().value) { 
        this.update_hok_baghu(db); 

        var query_insert_last_update = "UPDATE last_update SET value =" + snap_0.val().value + ""; 
        db.executeSql(query_insert_last_update, []).then(() => { 
        }, (error) => { 
         console.log("ERROR on update to last_update: " + JSON.stringify(error)); 
        }); 

       } else { 
        this.total_downloaded = 1; 
       } 
      }); 
    } else { 
     this.total_downloaded = 1;//this will refer to class now. 
    } 
}); 
+0

ありがとうございました。 – Nere

関連する問題