2017-01-31 14 views
0

Я новичок в Javascript-обещаниях, и я не могу сделать правильную цепочку.Promise <any> chaining in Ionic2 родной плагин SQLite

Я использую native SQLite Ionic2 plugin, который обертывает cordova sqlite plugin в перспективном API. Я хочу дождаться, когда SQL-запрос будет разрешен, а затем использовать набор результатов для получения данных, так как я выполняю предложение SELECT. SQLite пример вместе с моим кодом, выглядит следующим образом:

[...] 
    executeQuery(query: string, params: any){ 
    let db = new SQLite(); 
    return db.openDatabase({ 
     name: 'applicationData.db', 
     location: 'default' 
    }).then(() => { 
     db.executeSql(query, params).then((resultSet) => { 
     return resultSet; 
     }, (err) => { 
     console.error('Unable to execute sql: ', err); 
     }); 
    }, (err) =>{ 
     console.error('Unable to open database: ', err); 
    }); 
    } 

    getConfig(){ 
    let query = 'SELECT * from configuration'; 
    this.executeQuery(query, []).then((resultSet) => { 
     resultSet.rows.item(0); 
    }, (err) => { 

    }); 
    } 
    [...] 

И я получаю:

Property 'rows' does not exist on type 'void'.

[19:13:19] transpile failed

[19:13:19] ionic-app-script task: "build"

[19:13:19] Error: Error

L23: this.executeQuery(query, []).then((resultSet) => { 
L24: resultSet.rows.item(0); 
L25: }, (err) => { 

ответ

1

Вы должны вернуть db.executeSql вызова внутри метода executeQuery, в противном случае ваш Promise просто возвращает void, как транспилер говорит:

executeQuery(query: string, params: any){ 
    let db = new SQLite(); 
    return db.openDatabase({ 
     name: 'applicationData.db', 
     location: 'default' 
    }).then(() => { 
     //here 
     return db.executeSql(query, params).then((resultSet) => { 
      return resultSet; 
     }, (err) => { 
      console.error('Unable to execute sql: ', err); 
     }); 
    }, (err) =>{ 
     console.error('Unable to open database: ', err); 
    }); 
} 
+0

Большое спасибо много, это была именно проблема. Я с трудом понимаю логику обещаний. – masual