您好我对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自我创建代码,因为我的结果集比示例显示的要复杂得多。
请帮忙!
答案 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));
}
});
})
}
});