2017-01-31 6 views
0

私はJavascriptの約束を新しくしており、適切な連鎖を行うことができません。Promise <any> Ionic2 SQLiteネイティブプラグイン

cordova sqlite pluginを約束のようなAPIにラップするnative SQLite Ionic2 pluginを使用しています。私は解決するSQLクエリを待って、SELECT句を実行しているので、結果セットを使用してデータを取得します。

[...] 
    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) => { 

    }); 
    } 
    [...] 

そして私は取得しています::SQLiteの例では、私のコードと一緒に、以下のとおりである

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

はあなたがあなたのexecuteQueryメソッド内db.executeSql呼び出しを返す必要があり、そうでなければ、あなたのPromiseをちょうどのように返信します。

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

関連する問題