使用SQLite的Apache Cordova-迫不及待地返回数据

使用SQLite的Apache Cordova-迫不及待地返回数据,sqlite,cordova,Sqlite,Cordova,我想将数据保存到myData中 function outDb(outData) { var temp; var db = window.sqlitePlugin.openDatabase({ name: "test" }); db.executeSql("SELECT " + outData + " FROM test", [], function (res) { switch (outData) {

我想将数据保存到myData中

     function outDb(outData) {
         var temp;
         var db = window.sqlitePlugin.openDatabase({ name: "test" });
         db.executeSql("SELECT " + outData + " FROM test", [], function (res) {
             switch (outData) {
                       case "goal": temp = res.rows.item(0).GOAL;
                     break;
                 case "curDate":  temp = res.rows.item(0).CURDATE;
                     break;
                 case "Day1":  temp = res.rows.item(0).DAY1;
                     break;
                 case "Day2":  temp = res.rows.item(0).DAY2;
                     break;
                 case "Day3":  temp = res.rows.item(0).DAY3;
                     break;
                 default: temp = "is default";
             }
         });
         return temp;
     }
但这不起作用,因为return语句的执行速度比分配给变量的数据快


我能做什么?

所有sqlite命令都是事件驱动的。这意味着您必须等待值,直到事件完成

在您的情况下:您永远不会得到返回值,因为您的返回超出了success函数的范围

您可以重写函数,如:

函数outDboutData{ 无功温度; var db=window.sqlitePlugin.openDatabase{name:test}; db.executeSqlSELECT+outData+来自测试[],函数res{ 切换输出数据{ 案例目标:temp=res.rows.item0.goal; 打破 案例curDate:temp=res.rows.item0.curDate; 打破 案例第1天:temp=res.rows.item0.Day1; 打破 案例第2天:temp=res.rows.item0.Day2; 打破 案例第3天:temp=res.rows.item0.Day3; 打破 默认值:temp=为默认值; } 返回温度; };
} 您应该使用回调函数,因为Cordova sqlite存储是异步工作的

var myData = outDb("goal");
function getFromDB(_n, fn) {
var db = ...
db.transaction(function(tx) {
    var query = "SELECT * FROM <table_name> WHERE <field_name> = ?";
    tx.executeSql(query, [_n], function (tx, rs) {
        for(var x = 0; x < rs.rows.length; x++) {
            _res = rs.rows.item(x).value;
            fn(_res);
        }
    }, function (tx, error) {
        console.log('select error: ' + error.message);
    });
}, function (error) {
    console.log('transaction error: ' + error.message);
}, function () {
    console.log('transaction ok.');
});}

getFromDB(<name>, function(val) {
console.log(val);});