У меня проблемы с выполнением запросов при создании службы sqlite.Например, на домашней странице:
this.platform.ready().then(_ => {
this.db.init("dbName").then( initDB => {
this.config.init().then( initConf => {
this.sync.syncAll(
['col1',
'col2',
'col2',
'col3',
'col4',
'col5'], versionDb);
});
});
}).catch( (e) => Error('Error '+ e));
db, config и sync - все службы (провайдеры), но все они в основном используют db.service (экспортированные два класса, db и Table)
db.service имеет много функций и выглядит следующим образом:
constructor(public sqlite: SQLite) {
this.connectToDb();
}
private connectToDb():void {
let sqlite = new SQLite();
sqlite.create(this.options).then((db: SQLiteObject) => {
this.db = db;
}).catch(e => {
console.log(e);
});
}
дБ: private db:SQLiteObject;
Так что, если я вызываю запрос из дома, это:
async query(q, bindings?){
bindings = (typeof bindings !== 'undefined') ? bindings : [];
try{
return this.db.transaction((tr: any) => {
tr.executeSql(q, bindings).then((result) => {
return result;
}).catch((error) => {
console.log(this.error(tr, error));
return error;
}).toPromise();
});
}catch (error) {
console.log(error);
}
}
Обратите внимание, что запрос вызывается не напрямую из home.component, а из других необходимых служб, которые вызывают запрос.Проблема в том, что запрос никогда не завершается в режиме синхронизации;запрос выдает мне ошибки типа: я не могу использовать неопределенное или невозможное чтение чего-либо из возвращаемого значения для запроса.Это означает, что переход и затем executeSql не выполняются по порядку.
Извините за мой английский