NodeJS: получить JSON из SQL запроса - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в SQL. У меня есть база данных с двумя таблицами: пользователи и коллекции. В таблице «пользователи» хранятся пользователи приложения, а в «коллекциях» - коллекция элементов. Каждая коллекция принадлежит одному пользователю.

Мне нужно получить объект JSON с коллекциями и их владельцем.

Например:

[
{
  "collection_id": 23,
  "collection_name": "The Beatles Albums"
  "owner": {
      "user_id": 5,
      "first_name": "John",
      "last_name": "Doe"
   }
}
]

Это что я пробовал:

router.get('/collections/', (req, res) => {
    mysqlconnection.query('SELECT * FROM collections INNER JOIN users ON collections.OwnerID = users.id WHERE collections.OwnerID = users.id ', (err, rows, fields) => {
        if(!err) {
            res.json(rows);
        } else {
            console.log(err);
        }
    })
})

Вот что я получаю:

[
{
  "collection_id": 23,
  "collection_name": "The Beatles Albums",
  "owner": 5,
  "user_id": 5,
  "first_name": "John",
  "last_name": "Doe"
}
]

Я новичок в SQL. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 17 апреля 2020

Я считаю, что MYSQL JSON_OBJECT исправит вашу проблему. Попробуйте изменить свой запрос для этого:

SELECT 
  JSON_ARRAYAGG(
    JSON_OBJECT(
      'collection_id', collections.collection_id, 
      'collection_name', collections.collection_name,
      'owner', JSON_OBJECT(
          'user_id', users.user_id, 
          'first_name', users.first_name, 
          'last_name', users.last_name
      )
    )
  ) 
FROM 
  collections 

INNER JOIN 
  users 

ON collections.OwnerID = users.id 

WHERE collections.OwnerID = users.id '
...