sqlite cordova插件多选

时间:2017-02-24 10:21:03

标签: sqlite cordova

我有一张从4个表中填充的记录。 关系是一对多,所以我需要执行4个select语句。

据我所知,db.executeSql和transaction.executeSql在获取结果之前返回。 因此,下面的代码可能无法正确执行,因为可能在获取第一个结果之前执行第二个选择。 因此,正确的方法是在第一个选择的成功函数中执行第二个选择,然后在第二个选择的成功函数中执行第三个选择等。

有更好的方法吗?

下面是一个代码示例:

getRecord: function(id) {
    var me = this, record;
    me.open();
    me.db.executeSql('select * from mainRecord where id=?', [id], function(res) {
        if (res.rows.length) {
            record = new Test.model.MainRecord(res.rows.item(0));
        }
    });
    me.db.executeSql('select * from subTable1 where recordID=?', [id], function(res) {
        var arr = [];
        for (var i=0;i<res.rows.length;i++) {
            arr.push(res.rows.item(i));
        }
        // here record may be null as this function mau be executed before first select returns some result
        record.set('subTable1', arr);
    });
    me.db.executeSql('select * from subTable2 where recordID=?', [id], function(res) {
        var arr = [];
        for (var i=0;i<res.rows.length;i++) {
            arr.push(res.rows.item(i));
        }
        record.set('subTable2', arr);
    });
}

0 个答案:

没有答案