Перекрытие в NodeJS / mysql2 - PullRequest
1 голос
/ 03 февраля 2020

Когда я объединяю 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

I получаю результат как

[{
"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"
}]
}

1 Ответ

0 голосов
/ 03 февраля 2020

Ну, вы можете сделать это прямо из запроса, но вы можете нормализовать ваш код следующим образом:

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);
...