У меня есть проект, в котором у меня есть служба для настройки и запроса локальной базы данных sqlite. Я использую cordova-sqlite-plugin и Sqlite от Ionic Native.Ошибка при выполнении транзакций в приложении Ionic 2 с использованием Sqlite от Ionic Native
Это код, который я должен открыть в базе данных и создать таблицы после открытия базы данных.
import {Injectable} from '@angular/core';
import {SQLite} from "ionic-native";
@Injectable()
export class LocalDbService {
sqlDb: SQLite;
constructor() {
this.sqlDb = new SQLite();
}
openDatabase() {
return this.sqlDb.openDatabase({
name: 'app.db',
location: 'default'
}).then(() => {
return this.sqlDb.transaction((tx) => {
tx.executeSql(`create table if not exists groups (
id nvarchar(50) primary key not null,
name nvarchar(50) unique not null,
createdOn datetime not null default current_timestamp,
updatedOn datetime not null default current_timestamp,
deleted boolean not null default 0
)`, [])
})
}).catch((err) => {
console.error('Error while creating tables', err);
})
}
}
База данных открывается правильно. Но проблема в том, что транзакция для создания таблиц всегда выдает ошибку. На этапе catch, когда я регистрирую ошибку, она всегда не определена.
Если я выполняю простой метод executeSql вместо транзакции, он работает нормально. В настоящее время я запускаю код на устройстве на базе Android 6.0.
Я прочитал следующую документацию sql transactions в плагине Cordova sqlite и документацию плагина Sqlite в Ionic native.
Каков правильный способ использования транзакций Sqlite с Ionic 2?
this.sqlDb, безусловно, доступны внутри promise-> то часть, как я использую стрелки фу nctions. Я даже проверил его, выписав его. Он отлично выполняет методы, отличные от транзакции. Это вызывает только ошибку при вызове метода транзакции. Это поведение не только внутри обещания openDatabase. В любом месте, где я использую его, он вызывает ошибку при использовании транзакции. Спасибо за помощь. –
такое же поведение у меня есть в моем проекте. как-то транзакции не работают, как им следует. –