Angular 从API提供一对多的正确方法?
我已经尝试过搜索互联网络,并且承认我可能不知道找到解决方案所需的正确术语。我可以参考阅读材料,但我不确定从哪里开始 对于堆栈,我使用Angular+NestJS。计划使用Postgres作为数据库集成TypeForm 我有以下实体,其中一个预算有一个项目,而一个项目可能有多个预算:Angular 从API提供一对多的正确方法?,angular,rest,api,nestjs,Angular,Rest,Api,Nestjs,我已经尝试过搜索互联网络,并且承认我可能不知道找到解决方案所需的正确术语。我可以参考阅读材料,但我不确定从哪里开始 对于堆栈,我使用Angular+NestJS。计划使用Postgres作为数据库集成TypeForm 我有以下实体,其中一个预算有一个项目,而一个项目可能有多个预算: export interface Budget { id: number; description: string; project_id: number; budget_type: string;
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;
}
对于这种情况,我想在一个角度材质表中显示预算列表,并在表中显示“项目编号”,而不是“项目id”
我不懂这个数组。您问“我是否应该修改预算接口定义以返回项目数组?”但“预算有一个项目,而项目可能有多个预算” 您不应该将项目数组放入预算中。此外,由于每个预算只有一个项目。。。我看不出它是一个数组 是一些阅读,但你想列出你的整个预算表。您需要来自另一个表(而不仅仅是ID)的数据,因此可以进行连接。是连接类型上的StackOverflow post。下面是一个获取SQL查询的项目编号的示例:
SELECT Budget.id, Budget.description, Project.project_number
FROM Budget
LEFT JOIN Project ON Budget.project_id = Budget.id
因为这可以在SQL中轻松完成,所以不需要更改模式。在使用SQL时,您应该将一对多优先于多对多,并且应该使用“多”中的键指向“一”。您可以简单地将项目编号也包括在预算界面中。使用项目编号显示在表中,使用项目id引用项目实体。这样可以避免额外的读取复杂性。原始问题中提供的项目/预算关系只是一个简单的示例。我打算向实体添加更多属性。将显示在列表中的某些对象具有多个一对多关系。感谢您的回复。SQL不是问题所在。我的问题更多的是关于API的实现。我是否发送嵌套在预算中的项目。。或者,在应用程序收到预算后,我是否再次点击API以获取项目。同样,你是对的。我把描述弄错了。我在想反过来。如果我要从API请求项目。。我是将其他实体的“id”发送到应用程序,还是将这些实体包含在响应中。
{
"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"
}
]
}
SELECT Budget.id, Budget.description, Project.project_number
FROM Budget
LEFT JOIN Project ON Budget.project_id = Budget.id