не может прочитать свойство split из неопределенного sqlite ionic-v3 и SQLite - PullRequest
1 голос
/ 20 мая 2019

Я использую плагин ionic-v3 и sqlite. Я пытаюсь создать простую базу данных и вставить в нее одну запись, а затем извлечь эту запись с помощью SELECT Query.

Проблема, с которой я столкнулся, заключается в том, что база данных не будет создана, и мне будет показана ошибка «не могу прочитать свойство« split »неопределенного sqlite» и это будет появляться в коде, когда я впервые напишу try & catch.

$ ionic cordova plugin add cordova-sqlite-storage
$ npm install @ionic-native/sqlite
import { Component } from '@angular/core';
import { NavController, ToastController, Platform } from 'ionic-angular';
import { SQLite, SQLiteObject } from '@ionic-native/sqlite/ngx';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  private db: SQLiteObject;
  public movies: string[] = [];
  public message:any;

  constructor(public navCtrl: NavController, private toastCtrl: ToastController, private sqlite: SQLite, platform: Platform) {
    platform.ready().then(() => {
      this.CreateDatabase();
    });
  }

  CreateDatabase()
  {
    try
    {

      this.sqlite.create({
        name: 'data.db',
        location: 'default'
      })
        .then((db: SQLiteObject) => {

          db.executeSql('create table IF NOT EXISTS Movies(id INTEGER PRIMARY KEY, name VARCHAR(32))', [])
          .then(() => {
            console.log('Table Movies created !');
            this.db.executeSql('INSERT INTO `Movies` VALUES (`1`, `James Bond 007`)', [])
            .then(() => console.log('Executed SQL'))
            .catch(e => this.message = e);

        })
        .catch(e => this.message = e);


        })
        .catch(e => this.message = e);
    }
    catch(err)
    {
      this.presentToast(err);
    }

  }

  public retrieveFilms() {

    try 
    {
      this.db.executeSql('SELECT name FROM `Movies`', [])
      .then((data) => {
        if(data == null) {
          return;
        }

        if(data.rows) {
          if(data.rows.length > 0) {
            for(var i = 0; i < data.rows.length; i++) {
              this.movies.push(data.rows.item(i).name);
            }
          }
        }

      }).catch(e => this.presentToast(JSON.stringify(e)));
    }
    catch(err)
    {
      this.presentToast(err);
    }

  }

  presentToast(messageText) {
  let toast = this.toastCtrl.create({
    message: messageText,
    duration: 3000,
    position: 'bottom'
  });

  toast.onDidDismiss(() => {
    console.log('Dismissed toast');
  });

  toast.present();
}

}

Что я здесь не так делаю? Я попробовал все здесь в stackoverflow или даже из учебника в YouTube или ионной документации. но у меня ничего не работает!

1 Ответ

2 голосов
/ 21 мая 2019

Использовать старую ionic-native / sqlite версию 4.xx вместо 5.xx .У меня возникла такая же проблема при использовании новейшего ionic-native / sqlite с Ionic 3.

Удалите старый плагин с помощью npm или измените его в файле package.json .

И вам нужно изменить строку:

import { SQLite, SQLiteObject } from '@ionic-native/sqlite/ngx';

на

import { SQLite, SQLiteObject } from '@ionic-native/sqlite';
...