Ionic v4 (угловой) sqlite сервис - PullRequest
0 голосов
/ 09 мая 2019

У меня проблемы с выполнением запросов при создании службы 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 не выполняются по порядку.

Извините за мой английский

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...