Я пробовал искать в Интернете и признаю, что могу не знать правильную терминологию, необходимую для поиска решения. Я в порядке со ссылками на материалы для чтения, но я не совсем уверен, с чего начать.
Для стека я использую Angular + Nest JS. Запланируйте интеграцию TypeORM с использованием Postgres в качестве базы данных.
У меня есть следующие объекты, где у бюджета есть один проект, а у проекта может быть много бюджетов:
export interface Budget {
id: number;
description: string;
project_id: number;
budget_type: string;
budget_status: string;
}
export interface Project {
id: number;
project_number: string;
project_title: string;
project_status: string;
client: string;
}
Для этого сценария, Я хочу показать список Бюджетов в таблице angular материала и показать «номер_проекта» в таблице вместо «идентификатор_проекта».
- Должен ли я изменить определение интерфейса бюджета, чтобы оно возвращалось Проект?
ИЛИ
Должно ли приложение запрашивать ресурс Project через API?
В общем, для сущностей, которые содержат ссылки на другие сущности с идентификатором. Стоит ли включать эти объекты в ответ от API или вкладывать их в ответ.
Следует ли изменить определение интерфейса бюджета, чтобы оно возвращало его проект? Озабоченность: для более высокой степени Во вложенных объектах может быть больше данных, чем необходимо.
{
"budgets": [{
"id": 1,
"description": "platea dictumst",
"project": {
"id": 3,
"project_number": "19139",
"project_title": "neque aenean auctor gravida",
"project_status": "Lost",
"client": "Eabox"
},
"budget_type": "Change Order",
"budget_status": "Approved"
},
{
"id": 2,
"description": "et commodo vulputate justo in blandit",
"project": {
"id": 78,
"project_number": "19356",
"project_title": "et eros vestibulum ac est",
"project_status": "Active",
"client": "Kimia"
},
"budget_type": "Original",
"budget_status": "Lost"
}
]
}
Должно ли приложение запрашивать ресурс проекта через API? Внимание: если У меня есть 100 бюджетов, это будет дополнительные 100 вызовов API, пока приложение ожидает загрузки таблицы.
{
"budgets": [
{
"id": 1,
"description": "platea dictumst",
"project_id": 3,
"budget_type": "Change Order",
"budget_status": "Approved"
},
{
"id": 2,
"description": "et commodo vulputate justo in blandit",
"project_id": 78,
"budget_type": "Original",
"budget_status": "Lost"
}
]
}