(离子)如何在没有android / ios模拟器的浏览器上调试SQLite

时间:2018-04-24 05:08:39

标签: sqlite ionic-framework

我是离子新人。我尝试阅读有关在浏览器上成功执行的控制台日志,但它总是显示"无法读取属性' 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);
      })
    })
  }

1 个答案:

答案 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(() => {} );

enter image description here