访问PhoneGap中的WebSQL数据库对象



我正在尝试使用PhoneGap Developer应用程序访问WebSQL数据库结果,但是我似乎无法正确访问对象。这是一个示例代码:

db.transaction(function(tx) {
    tx.executeSql('SELECT * FROM ' + table, [],
    function (transaction, resultSet) {
        console.log(resultSet.rows);
    }, function (transaction, error) {
        console.log(error);
    });
});

通过PhoneGap CLI测试PhoneGap应用程序,该块在Chrome中效果很好。它返回控制台中的对象,然后cli say [对象sqlresultsetRowlist]。然后,我可以通过致电:

访问特定行
console.log(resultSet.rows.item(0));

这在桌面CLI和开发人员应用程序中都可以正常工作。不过,我想做的是使用jQuery $。each:

迭代结果。
$.each(resultSet.rows, function (k,v) {
    console.log(JSON.stringify(v));
});

这是我遇到问题的地方。在桌面Chrome和使用CLI中,每行被正确打印到控制台上,作为键=>值对的JSON字符串。但是,当我尝试使用PhoneGap Developter应用程序在测试设备上运行完全相同的代码时,控制台只会打印以下内容:" 100"是结果集的"长度"密钥,而空输出(相应的键为" item"(。

通过ResultSet对象迭代的正确方法是什么?作为参考,我在iOS 11上使用iPhone X作为测试设备。

我最终通过使用ResultSet数据从头开始构建对象:

function getIterableObjectFromResult(resultSet) {
    for (var i = 0, data = {}; i < resultSet.rows.length; i++) {
        data[i] = resultSet.rows.item(i);
    }
    return data;
}

然后可以在Phonegap开发人员应用中正确迭代产生的输出。

最新更新