mysql - 如何从 AngularJs 和 MySQL 中的 API 创建分层 JSON

标签 mysql angularjs

我正在尝试弄清楚如何将结构化 JSON 从查询输出到我的 API。我有以下 2 个表(MySQL):

**TABLE1:**

uid
name
pptw

**TABLE2**

id
table1_uid
assignment
start_time
end_time
date
comments

这是我正在寻找的 JSON 输出:

$scope.table1 = {
    "toplevel":
        [
           {
             "uid": 1,
             "name": "john",
             "pptw": "ATWF",
             "child":
                 {
                   "id": 1,
                   "table1_uid": 1,
                   "assignment": null,
                   "start_time": "14:53:00",
                   "end_time":  "15:00:00",
                   "date": null,
                   "comments": null
                 }
           }, 
           {
             "uid": 22,
             "name": "carol",
             "pptw": "DWFF",
             "child":
                 {
                   "id": 2,
                   "table1_uid": 22,
                   "assignment": null,
                   "start_time": "11:00:00",
                   "end_time":  "14:00:00",
                   "date": null,
                   "comments": "Completed"
                 }
            }
        ]
      }

我有以下 promise :

var request = $http({
                method: 'post',
                url: '.../api/v1/ppp',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                params: {
                    //record_uid: record_uid,
                }
            })
              .success(function (data, status, headers, config) {
                  deferred.resolve(data);
              })
              .error(function (data, status) {
                  deferred.reject();
              });

            return deferred.promise;

在数据库上,我有以下查询:

SELECT tb1.uid
    tb1.name
    tb1.pptw,
    tb2.id,
    tb2.table1_uid,
    tb2.assignment,
    tb2.start_time,
    tb2.end_time,
    tb2.date,
    tb2.comments
FROM 
    table1 tb1, table2 tb2
WHERE 
    tb1.uid = tb2.table1_uid

如果有任何关于如何实现这一目标的想法,我将不胜感激,非常感谢。

最佳答案

这是我的问题的解决方案,我设法弄清楚如何做到这一点。我希望它可以帮助其他尝试做与我相同的事情的人。

以下是创建分层 JSON 的方法:

var results_tree_header = [];
var results_tree = [];

if (result.rows.length > 0) {
    for (var i = 0; i < result.rows.length; i++) {


results_tree.push({
             "uid": result.rows.item(i).uid,
             "name": result.rows.item(i).name,
             "pptw": result.rows.item(i).pptw,
             "child":
                 {
                   "id": result.rows.item(i).id,
                   "table1_uid": result.rows.item(i).table1_uid,
                   "assignment": result.rows.item(i).assignment,
                   "start_time": result.rows.item(i).start_time,
                   "end_time":  result.rows.item(i).end_time,
                   "date": result.rows.item(i).date,
                   "comments": result.rows.item(i).comments
                 }
           }); 

results_tree_header = { toplevel: results_tree };

    }
}

关于mysql - 如何从 AngularJs 和 MySQL 中的 API 创建分层 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176972/

相关文章:

javascript - AngularJS中变量的动态名称

javascript - 选中/取消选中复选框列表中的所有项目时的奇怪行为

javascript - 如何检查 Angular 1.5 中是否存在组件

php - Wordpress - 更好地使用 php 脚本创建页面还是动态页面?

mysql - MYSQL 中不存在多个来检查行数

PHP发布错误Mysql

angularjs - Angular 更新本地存储单个对象

javascript - 选择选项后如何更新选择的选项

mysql - 如何在不删除增量目录的情况下使用 mysqlbackup 进行增量备份?

php - PHP while 循环中的 MySQL Count 仅返回一个结果然后为 Null