我是离子新人。我尝试阅读有关在浏览器上成功执行的控制台日志,但它总是显示"无法读取属性' executeSql'未定义"。任何人都可以建议调试项目的有效方法吗?
if (!this.isOpen)
{
this.storage = new SQLite();
this.storage.create(
{
name:"data.db",
location:"default"
})
.then((db:SQLiteObject) => {
this.db = db;
db.executeSql("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, identification INTEGER, name TEXT, lastname text)", {})
this.isOpen = true;
})
.catch((error) => {
console.log(error);
})
}
GetAllUsers() {
return new Promise((resolve, reject) => {
this.db.executeSql("SELECT * FROM users", [])
.then((data) => {
let arrayUsers = [];
if (data.rows.length > 0) {
for (var i = 0; i < data.rows.length; i++) {
arrayUsers.push({
id: data.rows.item(i).id,
identification: data.rows.item(i).identification,
name: data.rows.item(i).name,
lastname: data.rows.item(i).lastname
});
}
}
resolve(arrayUsers);
}, (error) => {
reject(error);
})
})
}
答案 0 :(得分:0)
似乎this.db
选择了WebSQL的实例。
this.db = openDatabase('mydb', '1.0', 'my first database', 2 * 1024 * 1024);
首先需要初始化与db的连接然后再使用。
如果已经初始化,请确保变量的范围正确并且可以在GetAllUsers()
内访问,或者使用函数内的openDatabase
重新打开连接。 (虽然,它从不建议在每个函数中打开数据库连接)
this.db = openDatabase('dbName', '1.0', 'my first database', 2 * 1024 * 1024);
this.db.executeSql("SELECT * FROM users", []).then(() => {} );