mysql - NodeJS/mysql2 中的重叠
问题描述
当我加入 2 个表时,我必须将结果作为嵌套数组我如何在 nodejs 中使用 mysql2
如果我正在执行
SELECT users.id as user_id , users.name as user_name , comments.id as comment_id , comments.comment as comment FROM users LEFT JOIN comments ON comments.user_id = users.id WHERE users.id = 1
我得到的结果是
[{
"user_id" : 1,
"user_name" : "Naaban"
"comment_id" : "2",
"comment" : "Hello"
},
{
"user_id" : 1,
"user_name" : "Naaban"
"comment_id" : "3",
"comment" : "Bye"
}]
我的期望是
{
"user_id" : 1,
"user_name" : "ramesh",
"comments" : [
{
"comment_id" : 2,
"comment" : "Hello"
},
{
"comment_id" : 3,
"comment" : "Bye"
}]
}
解决方案
好吧,您可以直接从查询中执行此操作,但是您可以按如下方式规范化您的代码:
let data = [{
user_id : 1,
user_name : "Naaban",
comment_id : "2",
comment : "Hello"
},
{
user_id : 1,
user_name : "Naaban",
comment_id : "3",
comment : "Bye"
}];
let normalizedData = [];
for(let i = 0; i < data.length; i++){
const comment = {comment_id: data[i].comment_id, comment: data[i].comment};
const { user_id, user_name} = data[i];
normalizedData.push({ user_id, user_name, comment });
}
console.log(normalizedData);
推荐阅读
- typescript - Typescript 3 项目参考与第三方库(来自 npm)
- haskell - 尝试使用中序遍历在 Haskell 中展平一棵树
- mysql - mysql中root用户的权限被拒绝
- bash - 如何逐行压缩标准输入和标准输出
- oracle - Cursor Select 语句 where 条件根据条件而变化
- grpc-java - grpc-java 双向流性能
- python - OpenMDAO 的 SimpleGADriver 中自动计算的位,具有整数值
- java - JMeter - 不支持的 major.minor 版本 51.0
- c# - 检查 c# 中至少一个文本框值是否不为空或零?
- android - 循环失败,不会增加数量,android studio