Как сделать(вернуть) объект на Node JS?

Здравствуйте, я делаю апи для приложение клон спотифая, я хочу вернуть все альбомы, но в каждом альбоме имеется соответственно треки, один альбом с множеством треков я вернул, а вот как вернуть все альбомы и чтобы у всех были треки!?
Вот объект одного альбома с множеством треков, который я сделал
{
    "id": 5,
    "uid": "4666b60a-cb96-46e4-a673-6f574a29117b",
    "name": "Woah",
    "author": "Beno",
    "picture": "234",
    "tracks": [
        {
            "id": 1,
            "uid": "082c8f97-8256-43a2-9c3e-6f1ef42d05e5",
            "name": "Woah",
            "author": "BENO",
            "picture": "123",
            "trackFile": null,
            "albumName": "Woah",
            "albumUid": "4666b60a-cb96-46e4-a673-6f574a29117b"
        },
        {
            "id": 2,
            "uid": "fc8daef6-1a07-45db-99d5-b2de80a70b3d",
            "name": "Woah",
            "author": "BENO",
            "picture": "123",
            "trackFile": null,
            "albumName": "Woah",
            "albumUid": "4666b60a-cb96-46e4-a673-6f574a29117b"
        }
    ]
}

Вот как я формирую такой объект:
@Get(':albumId')
    async findByAlbum(@Param('albumId') albumId: string) {
        const albums = await this.albumService.findOne(albumId)
        const tracks = await this.tracksService.findByAlbum(albumId)

        return {
            ...albums,
            tracks
        }
    }


Нужно чтобы они их было много. Как это можно сделать?
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
Chaki09
@Chaki09
fullstack web developer
Скорее всего тебе нужно использовать метод findAll, вместо findOne,
и в твоей ORM-библиотеке нужно сделать связку альбомов с треками, один ко многим(один альбом - много треков).

const albums = await this.albumService.findAll(albumId)

Если используешь Sequelize ORM, вот ссылка на связываение таблиц (https://sequelize.org/docs/v6/core-concepts/assocs/)

Еще полезно будет изучить нативные sql-запросы, в частности оператор "JOIN".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы