Я создаю очень простую платформу REST, используя Node.JS и PostgreSQL, используя pg-promise для доступа к базе данных. Моя цель — создать невероятно простую систему продажи билетов с пользователями и билетами. На данный момент я просто хочу запросить у сервера список всех билетов.
Моя база данных состоит из двух таблиц в следующем формате:
CREATE TABLE people (
ID SERIAL PRIMARY KEY,
NAME VARCHAR(128)
);
CREATE TABLE tickets (
ID SERIAL PRIMARY KEY,
SUBMITTED_BY int4 REFERENCES people(ID),
TITLE VARCHAR(128)
Как вы можете видеть, есть единственный внешний ключ, указывающий билеты на людей. Я заполнил свою базу данных следующими данными:
coop=> SELECT * FROM people;
id | name
----+----------
1 | John Doe
(1 row)
coop=> SELECT * FROM tickets;
id | submitted_by | title
----+--------------+------------------
1 | 1 | My first ticket!
(1 row)
И я использую pg-promise со следующей функцией запроса для отображения ответа JSON:
// GET ALL query function
function getAllTickets(req, res, next) {
db.any('select * from tickets left join people on tickets.submitted_by = people.id;')
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Retrieved ALL tickets'
});
})
.catch(function (err) {
return next(err);
});
}
Функция работает, я могу получить вывод JSON в следующем формате:
:: GET /api/tickets
{"status":"success","data":[{"id":1,"submitted_by":1,"title":"My first ticket!","name":"John Doe"}],"message":"Retrieved ALL tickets"}
Однако это не тот формат, который мне нужен. Я хочу инкапсулировать объект «лица» в объект «билеты», заменив внешний ключ следующим образом:
{"status":"success","data":[{"id":1,submitted_by: {"id": 1, "name":"John Doe"},"title":"My first ticket!"}],"message":"Retrieved ALL tickets"}
Причина, по которой я хочу сделать это, заключается в том, чтобы я мог легко использовать этот API из службы Angular2 и переводить как билет, так и человека в объект в моем компоненте. Однако я совершенно не знаю, как это сделать, и документация pg-promise не помогла.
Я занимался веб-программированием с Django в течение прошлого года, но с тех пор, как я перешел на Node.JS, я чувствую себя полным новичком. Может ли кто-нибудь предложить мне руку или указать мне правильное направление?