Ich versuche eine Datenbank zu öffnen und eine Tabelle in meiner Ionic 2 App zu erstellen. Das folgende Verfahren ist Teil eines Dienstes und soll die db öffnen und die Tabelle zu erstellen:Ionic 2: Tabelle kann nicht erstellt werden TypeError: Eigenschaft 'apply' von undefined kann nicht gelesen werden
initDb() {
let db = new SQLite();
db.openDatabase({
name: "data.db",
location: "default"
}).then(() => {
db.executeSql("CREATE TABLE IF NOT EXISTS people (avatarUrl VARCHAR, firstName VARCHAR, lastName VARCHAR)", []).then((data) => {
console.log("Table created: ", data);
}, (error) => {
console.error("Unable to create table", error);
})
}, (error) => {
console.error("Unable to open database", error);
});
}
Verfahren in meiner Homepage Konstruktor aufgerufen wird:
constructor(public platform: Platform, public navCtrl: NavController, public dbService: DBService) {
this.platform.ready().then(() => {
this.dbService.initDb();
});
}
Ich habe keine Ahnung, warum Ich erhalte diesen Fehler (siehe Titel). Danke
Haben Sie bereits versucht, Ihre initDb-Methode mit einem setTimeout zu umbrechen und eine Verzögerung von 1 Sek. Zu geben? Denn bei der Verwendung von crosswalk könnte die ready-Methode zu früh ausgelöst werden, da sie [hier] (https://github.com/driftyco/ionic-native/issues/882) angibt. – Blauharley
Es entfernt die 'Kann nicht lesen-Eigenschaft 'anwenden' von undefined Fehler ", danke! Aber jetzt kann ich innerhalb der setTimeout-Methode keine Methode (weder aus dem Dienst noch aus der lokalen) aufrufen, ich bekomme "this.function" keine Funktion für lokale Methoden und kann die Eigenschaft initDb von undefined nicht lesen initDb. – clementino36
Eigentlich konnte ich nicht auf meine Methoden zugreifen, weil ich 'setTimeout (function() {})' verwendete, was Kontextprobleme verursachte. Wenn ich 'setTimeout (() => {})' benutze, bekomme ich immer noch die 'Kann nicht lesen'-Eigenschaft von 'undefined' Fehler. – clementino36