You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用mysql npm包从MySQL/MariaDB查询返回嵌套对象数组到Node.js服务端

实现方案

MariaDB本身不会直接返回JavaScript格式的嵌套对象数组,但可以通过内置JSON函数一次查询生成完全符合你要求格式的JSON字符串,拿到结果后仅需一次JSON解析即可得到目标结构,无需额外做分组逻辑处理。

具体SQL语句

SELECT JSON_ARRAYAGG(friend_group) AS nested_result
FROM (
    -- 内层按personName分组,生成每个person对应的好友对象数组
    SELECT JSON_ARRAYAGG(
        JSON_OBJECT(
            'personName', p.Name,
            'friendName', f.friendName,
            'Address', p.Address,
            'Birthday', f.Birthday
        )
    ) AS friend_group
    FROM Person p
    INNER JOIN Friends f ON p.Name = f.personName
    GROUP BY p.Name
) AS group_temp;

使用说明

  • 执行上述查询后,返回结果的第一行nested_result字段就是和你要求格式完全一致的JSON字符串,在Node.js中仅需调用JSON.parse(result[0].nested_result)就能直接得到目标嵌套数组
  • 注意两个表都存在Birthday字段,上述SQL默认取Friends表存储的好友生日,如果你需要取person的生日,把f.Birthday替换为p.Birthday即可
  • 该方案要求MariaDB版本 >= 10.2,低于该版本无法使用JSON聚合函数

内容的提问来源于stack exchange,提问作者tal gumay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:45:02