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);
},

コンテキスト内に 2 つの 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 に 2 つのエンティティセットと 2 つのエンティティ定義があり、2 つのエンティティ定義が相互に参照していると思います。この場合、filter() のコードを次のように変更できます。

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