Элемент не повторяется - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать функцию поиска и функцию фильтра. javascript .. Я получаю данные из Firebase.

Может быть, я просто устал, но я не могу добраться до "this.retter", потому что он не повторяется .. Кто-нибудь может помочь - как я могу сослаться на этот список данных? : -)

//CLASS AND READ

    class MadService {
  constructor() {
    this.foodRef = firebaseDB.collection("madretter");
    this.userRef = firebaseDB.collection("users");
    this.authUser;
    this.authUserRef;
    this.retter;
    this.read();
  }

  read() {
    // SE DATABASEN OM DER ER ÆNDRINGER
    this.foodRef.onSnapshot(snapshotData => {
      let retter = [];
      snapshotData.forEach(doc => {
        let ret = doc.data();
        ret.id = doc.id;
        retter.push(ret);
      });
      this.appendFood(retter);
    });
  }



//SEARCH FUNCTiONALITY
      //SØGEFUNKITONEN
  search(value) {
    let searchQuery = value.toLowerCase();
    let searchFood = [];
    for (let ret of this.retter) {
      let overskrift = ret.name.toLowerCase();
      if (overskrift.includes(searchQuery)) {
        searchFood.push(ret);
      }
    }
    console.log(searchFood);
    this.appendFood(searchFood);
  }

Спасибо! : -)

1 Ответ

0 голосов
/ 28 февраля 2020

this.retter - это undefined в вашем коде. Вам нужно инициализировать его как итерируемый в какой-то момент, прежде чем пытаться выполнить итерацию по нему. Ниже приведен пример инициализации его в массив (обратите внимание this.retter = []; в конструкторе).

Я добавил addPhonyData метод и прокомментировал несколько вещей, поэтому код работает для примера:

//CLASS AND READ

class MadService {
  constructor() {
    this.foodRef; // = firebaseDB.collection("madretter");
    this.userRef; // = firebaseDB.collection("users");
    this.authUser;
    this.authUserRef;
    this.retter = [];
    //this.read();
    this.addPhonyData();
  }

  read() {
    // SE DATABASEN OM DER ER ÆNDRINGER
    this.foodRef.onSnapshot(snapshotData => {
      let retter = [];
      snapshotData.forEach(doc => {
        let ret = doc.data();
        ret.id = doc.id;
        retter.push(ret);
      });
      this.appendFood(retter);
    });
  }

  addPhonyData() {
    this.retter.push({
      name: 'DuMMy'
    });
  }

  search(value) {
    let searchQuery = value.toLowerCase();
    let searchFood = [];
    for (let ret of this.retter) {
      let overskrift = ret.name.toLowerCase();
      if (overskrift.includes(searchQuery)) {
        searchFood.push(ret);
      }
    }
    console.log(searchFood);
    //this.appendFood(searchFood); - not defined
  }
}

const ms = new MadService();

ms.search('dummy');
...