2014-01-22 165 views
0

您好,我對azure移動服務自定義API腳本有疑問。創建複雜的JSON對象

我有一個自定義腳本來創建一個JSON響應。 第一步是獲得平面物體。

Thsi是我的代碼:

var sql = "SELECT [Project].[id] AS [ID]," + 
    "[Project].[Name] AS [Name]," + 
    "FROM [Project]"; 

request.service.mssql.query(sql, [], { 
    success: function(results) { 

     if (results.length === 0) { 
      response.json(statusCodes.OK, results); 
      return; 
     } 

     var resultSet = []; 

     results.forEach(function(poi) { 
      resultSet.push(
       { 
        ID: poi.ID, 
        Name: poi.Name, 
        RelatedObjects: 
        { 
         [ 
          **???** 
         ]       
        }, 
       }); 
     }) 

     response.json(statusCodes.OK, resultSet); 
    } 
}); 

這工作得很好。現在我想通過相關表中的一些子對象來擴展我的結果對象。但不是簡單的singel子屬性(這很容易通過連接),我想添加從另一個表中選擇的子屬性的集合。 但我不知道如何獲得第二個查詢到我的代碼? :(

我認爲這是對「???」標記的位置。

我想,因爲我的結果集是複雜得多的例子顯示使用此JSON自創建代碼。

請幫幫忙!

回答

0

好,我這個梅西代碼解決它... 我敢肯定有一個更優雅的方式來做到這一點,但我沒有找到它。

var sql = "SELECT [Project].[ID]" + 
    ",[Project].[Name]" + 
    "FROM [Project]"; 

var sql2 = "SELECT [ID]" + 
    ",[UniqueSN]" + 
    ",[Name]" + 
    "FROM [DataLogger]" + 
    "WHERE [DataLogger].[ProjectID] = ?"; 

request.service.mssql.query(sql, [id], { 

    success: function(results) { 

     var resultSet = []; 

     results.forEach(function(poi) { 

      var loggerResultSet = []; 

      request.service.mssql.query(sql2, [poi.ID], { 
       success: function(results2) { 

        results2.forEach(function(logger) { 
         loggerResultSet.push(
          { 
           ID: logger.ID, 
           Name: logger.Name, 
           UniqueSN: logger.UniqueSN, 
          }); 
        }) 

        resultSet.push(
         { 
          ID: poi.ID, 
          Name: poi.Name, 
          Logger: loggerResultSet, 
         }); 

        response.json(statusCodes.OK, resultSet); 


        console.log(JSON.stringify(resultSet)); 
       } 
      }); 
     }) 
    } 
});