在使用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 data, The Error