Куда поместить предварительно загруженный файл БД в Ionic 2 RC0

#sqlite #cordova #ionic-framework #ionic2

#sqlite #кордова #ionic-framework #ionic2

Вопрос:

Я использую плагин sqlite cordova ext для работы с предварительно заполненной базой данных sqlite.

С новым RC0 Ionic 2 папка www полностью перестраивается при каждой сборке. Раньше вы оставляли свой файл БД в каталоге www, поскольку это расположение плагинов по умолчанию для чтения, но теперь они удаляют и перестраивают весь файл www и не перемещают файлы src в www.

Итак, есть ли новый способ скопировать этот файл БД в папку www после сборки / предотвращения его удаления при сборке или любой другой обходной путь?

Ошибка: ошибка оператора без обработчика ошибок: сбой sqlite3_prepare_v2: нет такой таблицы: имя_таблицы (…)

Моя конфигурация плагина sqlite ext

 this.db.openDatabase({
  name: 'example.db',
  location: 'default', // the location field is required
  createFromLocation: 1,
  existingDatabase: true,
});
  

Ответ №1:

1) Я установил плагин cordova-sqlite-ext

2) В app.component.ts я импортировал import { SQLite } from 'ionic-native';

3) В platform.ready() я вставил:

 let db = new SQLite();
      db.openDatabase({
        name: "data.db",
        location: "default",
        createFromLocation: 1
      }).then(() => {
        db.executeSql("SELECT * from config", []).then((data) => {
          console.log("Data received: ", data);
        }, (error) => {
          console.error("Unable to execute sql", error);
        })
      }, (error) => {
        console.error("Unable to open database", error);
      });
  

4) Я создаю файл с именем copy.config.json по тому же пути, что и package.json, и вставляю:

 module.exports = {
    include: [
        {
            src: 'src/assets/',
            dest: 'www/assets/'
        },
        {
            src: 'src/index.html',
            dest: 'www/index.html'
        },
        {
            src: 'src/data.db',
            dest: 'www/data.db'
        },
        {
            src: 'src/service-worker.js',
            dest: 'www/service-worker.js'
        },
        {
            src: 'node_modules/ionic-angular/polyfills/polyfills.js',
            dest: 'www/build/polyfills.js'
        },
        {
            src: 'node_modules/ionicons/dist/fonts/',
            dest: 'www/assets/fonts/'
        },
    ]
};
  

5) В файл package.json я вставил:

 "config": {
    "ionic_copy": "./copy.config.js"
  },
  

перед последней строкой "description": "SqlProject: An Ionic project" .

Это взято из: Куда поместить базы данных SQLite в Ionic 2 RC0?автор: morris4ever69