我已将 $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 上无效?
最佳答案
如果返回多个结果,可以通过对应索引的rows.item方法查询得到结果。
var elements = [];
for (var i = 0; i < result.rows.length; i++) {
elements.push(result.rows.item(i));
}
return elements;
其中 result 是 $cordovaSQL 在它的 promise 完成时返回的对象。
关于javascript - 从对象中检索数据在 Ionic 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660729/