创建复杂的JSON对象

时间:2014-01-22 12:18:33

标签: api mobile azure service

您好我对azure移动服务自定义API脚本有疑问。

我有一个自定义脚本来创建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自我创建代码,因为我的结果集比示例显示的要复杂得多。

请帮忙!

1 个答案:

答案 0 :(得分:0)

好的,我用这个messi代码来解决它... 我确信有更优雅的方式可以做到这一点,但我还没有找到它。

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