2016-12-27 17 views
1

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

+0

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

+0

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

+0

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

Antwort

3

Sorry, ich konnte diesen Fehler nicht reproduzieren, sondern selbst eine Testapp erstellen. Diese App funktioniert bei mir, trotz diese innerhalb bereit auch genannt wird:

app.component.ts:

import { Component } from '@angular/core'; 
import { Platform } from 'ionic-angular'; 
import { StatusBar, Splashscreen, SQLite } from 'ionic-native'; 

import { TabsPage } from '../pages/tabs/tabs'; 
import { DbService } from '../providers/db-service'; 

@Component({ 
    templateUrl: 'app.html', 
    providers: [DbService] 
}) 
export class MyApp { 
    rootPage = TabsPage; 

    constructor(public platform: Platform, public dbService: DbService) { 
    platform.ready().then(() => { 
     // Okay, so the platform is ready and our plugins are available. 
     // Here you can do any higher level native things you might need. 
     StatusBar.styleDefault(); 
     Splashscreen.hide(); 
     this.dbService.initDb(); 
    }); 
    } 
} 

ich diesen Dienst gemacht durch diese Ionen Befehl:

ionic g provider DbService 

db-service.ts:

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 
import 'rxjs/add/operator/map'; 
import { SQLite } from 'ionic-native'; 

/* 
    Generated class for the DbService provider. 

    See https://angular.io/docs/ts/latest/guide/dependency-injection.html 
    for more info on providers and Angular 2 DI. 
*/ 
@Injectable() 
export class DbService { 

    constructor(public http: Http) { 
    console.log('Hello DbService Provider'); 
    } 

    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); 
    }); 
    } 

} 

ionische-Version: 2.1.18

cordova-Version 6.0.0

Hoffe, es hilft.

+0

Nun, ich habe ein neues sauberes Projekt gestartet, genau wie du und es funktioniert. Ich habe keine Ahnung was mit dem anderen los ist ... Vielen Dank für Ihre Zeit! – clementino36

+0

Gern geschehen! Es war mir ein Vergnügen. :) Es gibt ein Happy End, nichts anderes zählt. – Blauharley

Verwandte Themen