【问题标题】:Retrieving Data From Object Not Working in Ionic从不在 Ionic 中工作的对象中检索数据
【发布时间】:2015-10-18 02:08:46
【问题描述】:

我已将 $cordovaSQLite 附加到我的 ionic 应用程序中。这是代码的基本示例。

function retrieve() {
var q = $q.defer();

var query = 'SELECT user_credentials, user_id FROM Users;';

$ionicPlatform.ready(function (){
  $cordovaSQLite.execute(db, query).then(function(res) {
    if (res.rows.length > 0) {
      console.log("found user");
      console.log(res);
      console.log(JSON.stringify(res));
      q.resolve(res.rows[0]);
    } else {
      console.log("no rows found");
      q.resolve(false);

    }
  }, function (err) {
    q.reject(err);
  });
});

return q.promise;
}

这是打开数据库的代码。

if(window.cordova) {
  // App syntax
  db = $cordovaSQLite.openDB( "CoolApp.db" );
} else {
  // Ionic serve syntax
  db = window.openDatabase("CoolApp.db", "1.0", "Cool App", -1);
}

当我在 Chrome 上测试我的应用时,我的日志显示了这一点

rows: SQLResultSetRowList
  0: Object
    user_credentials: "asdf"
    user_id: 234
  length: 1
rowsAffected: 0

但是,当我在 iOS 应用或 Safari 上运行时查看日志时,我收到了

{"rows":{"length":1},"rowsAffected":0,"insertId":1}

我的问题是为什么我没有收到rows 的值?为什么这在浏览器上有效,但在 iOS 上无效?

【问题讨论】:

  • 但在浏览器中,rowsaffected 也是 0 !
  • 受影响的行与我无关。重要的是行的内容。除非我弄错了。
  • @jason328 手机数据库里有记录吗?
  • 是的,数据库已填充。

标签: javascript ios sql cordova ionic


【解决方案1】:

如果返回多个结果,可以通过相应的索引查询rows.item方法得到结果。

var elements = [];
for (var i = 0; i < result.rows.length; i++) {
    elements.push(result.rows.item(i));
}
return elements;

其中 result 是 $cordovaSQL 在其承诺完成时返回的对象。

【讨论】:

    【解决方案2】:

    您是否尝试为您的浏览器实例化 webSQL 而不是 SQLite DB?

    您始终可以为您的设备返回 SQLite,但 Chrome 和 Firefox 等现代浏览器不支持 SQLite。

    【讨论】:

    • 是的,我做到了。当我打开数据库时,我必须根据我使用的是浏览器还是移动设备来设置打开它。
    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多