我们正在制作Ionic 2(目前是测试版11)。
我们正在使用内置的SqlStorage数据库。从Android我们的应用程序能够很好地读取和写入日期,但对于iOS,我们只能写入数据。当我们尝试读取数据时,我们得到返回的行数但没有实际数据。
getQueueItems(): Promise<any> {
return new Promise<any>((resolve, reject) => {
this.sql.query('SELECT * FROM queue').then(
(res) => {
console.log(res, 'result');
// resolve(sqlResult.res.rows);
}
);
}).catch(() => {
});
}
结果集如下所示:
{
"tx": {
"db": {
"openargs": {
"name":"__ionicstorage",
"location":2,
"createFromLocation":0,
"backupFlag":2,
"existingDatabase":false,
"dblocation":"nosync"
},
"dbname":"__ionicstorage"
},
"txlock":true,
"readOnly":false,
"executes":[],
"finalized":true
},
"res": {
"rows": {
"length":3
},
"rowsAffected":0
}
}
有谁知道我们如何从SqlStorage读取以便iOS获取数据?
答案 0 :(得分:0)
经过大量搜索和阅读大量的论坛帖子后,我们终于找到了答案。我在这里张贴给未来的搜索者,希望它会对你有帮助。
诀窍在于,为了使查询结果可供所有平台使用,您必须自己在结果集中迭代添加适当的对象。
this.sql.query('SELECT * FROM queue').then(
(sqlResult) => {
let queueItems = [];
for(let i = 0; i < sqlResult.res.rows.length; i++){
queueItems.push(sqlResult.res.rows.item(i));
}
resolve(queueItems);
}
);