我试图在 Ionic 3 中读取我的 Sqlite 数据库,但返回的值始终为 null。如果我在该方法中 console.log(data.rows.item(0).token)
,那么它会将正确的值记录到控制台,但不会将正确的值返回给调用代码。
这是我用来获取 token 的方法:
getToken() {
//Open database
this.openCreateDatabase()
.then((db: SQLiteObject) => {
//Execute select
db.executeSql("SELECT token FROM Token WHERE id = 1", [])
.then((data) => {
//Get and return the token
return data.rows.item(0).token;
})
.catch((e) => {
//Log any errors
console.log(JSON.stringify(e));
return null;
})
});
}
调用代码很简单:
ionViewDidEnter(){
console.log(this.sql.getToken());
}
最佳答案
For getting token you need to make getToken as
Promise
.
在openCreateDatabase
之前添加return;
getToken() {
//Open database
//
return this.openCreateDatabase()
.then((db: SQLiteObject) => {
//Execute select
db.executeSql("SELECT token FROM Token WHERE id = 1", [])
.then((data) => {
//Get and return the token
return data.rows.item(0).token;
})
.catch((e) => {
//Log any errors
console.log(JSON.stringify(e));
return null;
})
});
}
将 ionViewDidEnter
更改为:
1.async等待
async ionViewDidEnter(){
let token = await this.sql.getToken();
console.log(token);
}
<强>2。或者然后
ionViewDidEnter(){
this.sql.getToken().then(token => {
console.log(token)
})
.....
}
关于javascript - Ionic 3 Sqlite 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194367/