0

我正在将现有应用程序从 WebSql 重写为 JayData。该应用程序是建立在 WebSql 之上的,它被贬低了,需要被替换(至少迟早)。我将所有 WebSql 重新分解为它自己的适配器,现在正在尝试使用 JayData 编写一个并行适配器。

我想知道的是如何优雅地处理 sql join。这是一个例子

read: function (display) {
    var sql = "",
        args = [];

    sql += "SELECT table1.table1Id, table1.name, table1Local.UpdateTime ";
    sql += "FROM table1";
    sql += "LEFT OUTER JOIN table1Local ON table1.table1Id = table1Local.table1Id ";
    sql += "WHERE table1Local.Display = ? ";

    args[0] = (display === true ? "1" : "0");

    return database.read(sql, args);
},

我在上下文中有两个 jayData 实体“ table1”和“ table1Local”。这是我的粗略尝试,但它没有加入数据。

   read: function (display) {

        display = display === true ? "1" : "0";

        var dfd = $.Deferred();

        var context = new Table1Context({
            name: config.database.type,
            databaseName: config.database.name
        });

        context.onReady(function(){

            return context.Table1
                .filter(function( t){
                    // We need to use the Display property in the local "table"
                    return t.display == this.display;
                }, {display: display})
                .toArray()
                .then(function (ts) {

                        var data= [];

                        ts.forEach( function(t) {
                            data.push(t);
                        });

                        dfd.resolve(data);
                        return views;
                    });
        });

        return dfd.promise();
    }

我对如何使它正常工作有点迷茫。

4

1 回答 1

0

我猜你在 Table1Context 中有两个实体集和两个实体定义,这两个实体定义相互引用。在这种情况下,您可以将 filter() 的代码更改为

t.table1local.display == this.display;
于 2013-06-03T13:43:58.457 回答