2013-12-10 57 views
2

在C#中編寫Web服務時,我們創建對象,然後序列化並將其發送給客戶端。我想要做類似的東西在Azure中的移動服務合併Azure移動服務中的多個表格

我有2個表

  1. OrderHead
  2. OrderRow

Orderhead有訂單信息(totalprice,客戶ID,創建日期等)並且OrderHead表中的一條記錄可以在OrderRow中包含多個項目。訂單表具有訂購商品的詳細信息(訂購商品ID,商品名稱,價格等)

如何將它們連接在一起並從自定義api中獲取單個響應。類似於下面的東西

{ 
    "orderheadid": "3424232", 
    "totalprice": 423423, 
    "orderrow": [ 
     { 
      "itemid": "32423", 
      "itemprice": 2 
     }, 
     { 
      "itemid": "23", 
      "itemprice": 333 
     }, 
     { 
      "itemid": "223", 
      "itemprice": 4 
     } 
    ] 
} 

或者我應該從客戶端網站分別調用每項服務嗎?

我知道我可以使用mssql對象進行INNER JOIN查詢,但是它不會返回上面給出的結構化JSON對象。請有人賜教給我。

感謝您的時間提前

回答

0
  1. 檢索從表1中的值,並將其分配給一個變量
  2. 從表2檢索的值,並把它添加作爲新屬性添加到上面創建的變量。

類似下面會做

var orderHead; 
var orderRow; 
var orderRowTable = table.getTable('orderhead'); 
orderHeadTable.where({ 
//any other query details 
    customerid:request.user.userId 
    }).read({ 
     success:function(result){ 
      console.log(result.length); 
      if(result.length===0){ 
       response.send(400, { message : 'Cart empty' }); 
      }else{ 
       orderHead = result[0]; 
       getOrderRows() 
      } 
     }, 
     error:function(){ 
      response.send(400, { message : 'error while reading order information' }); 
     } 
    }); 

function getOrderRows(){ 
    var orderRowTable = table.getTable('orderrow'); 
    orderRowTable.where({ 
     orderheadid:orderHead.id 
    }).read({ 
     success:function(result){ 
      if(result && result.length===0){ 
       response.send(400, { message : 'Cart empty' }); 
      }else{ 
       orderRows = result; 
       orderHead.orderRows = orderRows; 
       response.send(200, orderHead);   
      } 
     }, 
     error:function(){ 
      response.send(400, { message : 'error while reading order information - row' }); 
     } 
    }); 
}