2013-05-28 72 views
0

我正在從WebSql向JayData重寫現有應用程序。該應用程序是建立在WebSql上的,這些WebSql需要被替換(至少遲早)。我將所有的WebSql都考慮進了它自己的適配器中,現在我試圖用JayData編寫一個並行適配器。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(); 
    } 

我有點失落,關於如何使其正常工作。

+0

嗨本週我們進入一個新的辦公室,所以我們能不能夠回覆快速 –

+0

@GaborDolla無後顧之憂。祝你好運! – JonWells

回答

0

我猜你在Table1Context和兩個實體定義中有兩個實體集,兩個實體定義互相引用。在這種情況下,你可以在過濾器()的代碼更改

t.table1local.display == this.display;