【发布时间】:2020-04-30 18:41:02
【问题描述】:
我已尝试搜索互联网并接受我可能不知道找到解决方案所需的适当术语。我可以参考阅读材料,但我不确定从哪里开始。
对于堆栈,我使用的是 Angular + NestJS。计划使用 Postgres 作为数据库集成 TypeORM。
我有以下实体,其中一个预算有一个项目,一个项目可能有多个预算:
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;
}
对于这种情况,我想在一个角度材料表中显示预算列表,并在表中显示“project_number”而不是“project_id”。
- 我是否应该修改 Budget 接口定义以返回它的 Project?
或
- 我应该让应用通过 API 请求项目资源吗?
一般来说,对于持有对具有 id 的其他实体的引用的实体。我应该将这些实体包含在 API 的响应中还是将它们嵌套到响应中。
我是否应该修改 Budget 接口定义以返回它的 Project? 关注点:对于嵌套程度更高的对象,可能存在比实际需要更多的数据。
{
"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 个预算,这将是应用程序等待表加载时对 API 的额外调用 100 次。
{
"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"
}
]
}
【问题讨论】:
-
您可以简单地将 project_number 也包含到预算界面中。使用 project_number 显示在表格中,使用 project_id 引用项目实体。这样可以避免额外的读取复杂性。
-
原问题中提供的项目/预算关系只是一个简单的例子。我打算为实体添加更多属性。将在列表中显示的某些对象具有多个一对多关系。