Это привязка обратного вызова firebase

#javascript #node.js #firebase #firebase-realtime-database

#javascript #node.js #firebase #firebase-realtime-database

Вопрос:

У меня есть эта функция, но кажется, что это значение равно нулю, потому что я получаю сообщение об ошибке: (узел: 16232) Необработанное promiserejectionwarning: TypeError: не удается прочитать свойство ‘groupPages’ из null

  async setTriggers() {
    this.firebase.database().ref().child('users').child(this.userId).child('social/targets').on('value', async function (snapshot) {
        var targets = snapshot.val();
        for (let key of Object.keys(targets)) {
            var currentTarget = targets[key];
            if (currentTarget.social == "Facebook") {
                if (currentTarget.type == 'groupId') {
                    if (this.groupPages[currentTarget.groupId] == null) { // error triggers here
                        await this._openGroupPage(key, currentTarget.groupId);
                    }
                }
            }
        }
.
.
.
  

Ответ №1:

Самое простое исправление — использовать обозначение жирной стрелкой:

 this.firebase.database().ref().child('users').child(this.userId).child('social/targets')
  .on('value', async(snapshot) => {
    var targets = snapshot.val();
    for (let key of Object.keys(targets)) {
        var currentTarget = targets[key];
        if (currentTarget.social == "Facebook") {
            if (currentTarget.type == 'groupId') {
                if (this.groupPages[currentTarget.groupId] == null) { // error triggers here
                    await this._openGroupPage(key, currentTarget.groupId);
                }
            }
        }
    }