Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在从对象中检索数据,该对象不在Ionic中工作_Javascript_Ios_Sql_Cordova_Ionic - Fatal编程技术网

Javascript 正在从对象中检索数据,该对象不在Ionic中工作

Javascript 正在从对象中检索数据,该对象不在Ionic中工作,javascript,ios,sql,cordova,ionic,Javascript,Ios,Sql,Cordova,Ionic,我已将$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 (re

我已将
$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}

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

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


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

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

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

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

但在浏览器中,rowsaffected也是0!受影响的人与我无关。重要的是行的内容。除非我弄错了。@jason328手机的数据库中有任何记录吗?是的,数据库已填充。是的,我有。当我打开db时,我必须设置为打开它,这取决于我使用的是浏览器还是移动设备。