Ionic 3 Sqlite:错误错误:未捕获(在承诺中):TypeError:无法读取undefined的属性

时间:2017-09-29 09:13:22

标签: angular sqlite asynchronous ionic3 angular-promise

在使用Ionic和Angular从sqlite中使用和检索数据时遇到问题。 实际上我知道问题出现在哪里,但在这种情况下不知道如何解决问题。 我很清楚这一点并没有找到解决方案(我从2天开始搜索......)。

在我的数据库提供程序中我想通过sql查询填充List。问题是它是异步的。

在这里你可以看到代码。问题发生在getPlants中的eintrag之后。

  //Get all Plants
    getPlants() {
      return this.database.executeSql("SELECT * FROM plants", []).then((data) => {
        if (data.rows.length > 0) {
          for (var i = 0; i < data.rows.length; i++) {
            this.plants.push({
            plantId: data.rows.item(i).plantId,
            fk_categoriesId: data.rows.item(i).fk_categoriesId,
            name: data.rows.item(i).name,
            favourite : data.rows.item(i).favourite,
            foto: data.rows.item(i).foto,
            aussaatzeitpunkt: data.rows.item(i).aussaatzeitpunkt,
            medium: data.rows.item(i).medium,
            umgebung: data.rows.item(i).umgebung,
            anbauflaeche: data.rows.item(i).anbauflaeche,

         eintrag: this.getOneEntry(data.rows.item(i).plantId).then((d:Tagebucheintraege[])=>{
              console.log("eintrag einer pflanze"+d[0].notiz);
              return d;
            })
           });
          }
        }
        return this.plants;
      }, err => {
        console.log('Error: ', err);
        return [];
      });
    }

    //Get Entry to Plant ID
    getOneEntry(id:number){
        return this.database.executeSql("SELECT * FROM entries WHERE fk_plantId="+id, []).then((data) => {
        if (data.rows.length > 0) {
          for (var i = 0; i < data.rows.length; i++) {
            this.entries.push({
            eintragId: data.rows.item(i).eintragId,
            fk_plantId: data.rows.item(i).fk_plantId,
            datum: data.rows.item(i).datum,
            notiz: data.rows.item(i).notiz,
            groesePflanze: data.rows.item(i).groesePflanze,
            phWert: data.rows.item(i).phWert,
            luftfeuchttigkeit: data.rows.item(i).luftfeuchttigkeit,
            erdfeuchtigkeit: data.rows.item(i).erdfeuchtigkeit,
            ecWert: data.rows.item(i).ecWert,
            temperatur: data.rows.item(i).temperatur,
            schaedlinge: data.rows.item(i).schaedlinge,
            mangelerscheinung: data.rows.item(i).eintragId,
            fotopfad: data.rows.item(i).fotopfad,
            beleuchtunngstaerke: data.rows.item(i).beleuchtunngstaerke,
            beleuchtungsabstand: data.rows.item(i).beleuchtungsabstand,
            groeseToepfe: data.rows.item(i).groeseToepfe,
            mengeWasserProTag: data.rows.item(i).MengeWasserProTag,
            artDuengerUndWerteproTag: data.rows.item(i).artDuengerUndWerteproTag,
            mengeduenger: data.rows.item(i).mengeduenger,
            tagVegi: data.rows.item(i).tagVegi,
            tagFlo: data.rows.item(i).tagFlo,
            tagFru: data.rows.item(i).tagFru,
           });
          }
        }
        return this.entries;
      }, err => {
        console.log('Error: ', err);
        return [];
      })
    }

log console.log(“eintrag einer pflanze”+ d [0] .notiz); 工作得很好,但我认为当植物返回时,eintrag还没有填满。 也许它适用于Oberservables,但我不知道如何使用它,特别是在这种情况下。 谢谢您的回答! Try to access the dataThe Error

0 个答案:

没有答案