使用 JSON 格式的 Node.JS 从 MySQL 检索数据
Posted
技术标签:
【中文标题】使用 JSON 格式的 Node.JS 从 MySQL 检索数据【英文标题】:Retrieve data from MySQL using Node.JS in JSON format 【发布时间】:2017-02-17 05:29:21 【问题描述】:我有以下 MySQL 表:
| category | icon |
-------------------
| CAT_A | xxx |
| CAT_B | yyy |
和
| sub_category | icon | category
--------------------------------
| SUB_X | ppp | CAT_A
| SUB_Y | qqq | CAT_A
| SUB_Z | rrr | CAT_B
| SUB_U | www | CAT_B
现在我想在一个查询中获取所有数据 我正在使用 Node.JS 并编写了以下查询
SELECT c.category categoryTitle, c.icon categoryIcon, s.sub_category subCategoryTitle, s.icon subCategoryIcon FROM categories c INNER JOIN sub_categories s ON c.title = s.category
这是我的 Node.JS 代码
var arrCategories = [];
for (var category in rows)
if (rows.hasOwnProperty(category))
arrCategories.push(rows[category]);
response.json(arrCategories);
现在我得到以下响应
[
"categoryTitle":"CAT_A",
"categoryIcon":"xxx",
"subCategoryTitle":"SUB_X",
"subCategoryIcon":"ppp"
,
"categoryTitle":"CAT_A",
"categoryIcon":"xxx",
"subCategoryTitle":"SUB_Y",
"subCategoryIcon":"qqq"
,......
]
但我想要以下输出:
[
"categoryTitle":"CAT_A",
"categoryIcon":"xxx",
"subCategory":[
"subCategoryTitle":"SUB_X",
"subCategoryIcon":"ppp"
,
"subCategoryTitle":"SUB_Y",
"subCategoryIcon":"qqq"
,
]
,......
]
我应该怎么做才能获得所需格式的输出
任何帮助都是appriciated
【问题讨论】:
【参考方案1】:这是另一个不需要更改 SQL 的选项。
var categoryMap = ;
var categories = [];
rows.forEach(function(row)
var category = categoryMap[row.categoryTitle];
if (!category)
category =
categoryTitle: row.categoryTitle,
categoryIcon: row.categoryIcon,
subCategory: []
;
categoryMap[row.categoryTitle] = category;
categories.push(category);
category.subCategory.push(
subCategoryTitle: row.subCategoryTitle,
subCategoryIcon: row.subCategoryIcon
);
);
response.json(categories);
【讨论】:
【参考方案2】:在按类别和图标分组时使用GROUP_CONCAT
可能会给您一个可接受的结果:
SELECT c.category AS categoryTitle,
c.icon AS categoryIcon,
GROUP_CONCAT(s.sub_category) AS subCategoryTitle,
GROUP_CONCAT(s.icon) AS subCategoryIcon
FROM categories c
INNER JOIN sub_categories s
ON c.title = s.category
GROUP BY c.category,
c.icon
此查询应生成输出到您的 Node.js 应用程序,如下所示:
[
"categoryTitle":"CAT_A",
"categoryIcon":"xxx",
"subCategoryTitle":"SUB_X,SUB_Y",
"subCategoryIcon":"ppp,qqq"
,
"categoryTitle":"CAT_B",
"categoryIcon":"yyy",
"subCategoryTitle":"SUB_Z,SUB_U",
"subCategoryIcon":"rrr,www"
,
...
]
【讨论】:
很好,非常感谢,现在我可以将它操作为我想要的输出。太棒了 @Shifatul 也请分享您的方法以上是关于使用 JSON 格式的 Node.JS 从 MySQL 检索数据的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 解析 HTML 表并以 JSON 格式获取结果
如何使用 Node.js 将 JSON 数据从 Node.js 发送和获取到 HTML