在前端和服务器之间共享相同的模型

Share same model between front-end and server

简单的问题,但我想知道如何有效地做到这一点。很容易吸引反对票。

我有一个模型,我想在前端和后端之间共享。对于手动前端,我想添加一些属性。后端不需要这些属性。

export class ModelA {
id: string;
name: string;
value: number;
}

以上对于服务器(后端)来说已经足够了。

但在前端我需要对值做一个额外的 thing.Based 我需要定义颜色属性(值 < 10,颜色绿色等)

export class ModelA {
id: string;
name: string;
value: number;
color: string;
}

因此,当我在编辑 id/name 之后将 ModelA 更新回服务器时,我不想传递颜色属性。

对于单一模型,我如何实现这一点?

我认为在这种情况下您正在寻找的是切片(例如,参见:How to get a subset of a javascript object's properties

您实际上是在获取对象属性的子集,

let objectFront = { id: 'a', name: 'b', value: 'c', color: "d" };
let objectBack = (({id, name, value}) => ({id, name, value}))(objectFront);

编辑: 另外,我不确定在您的对象上拥有更多属性对您有何不利。这取决于您的框架和查询方法。当在后端部分接收对象时,我只想简单地忽略对象的其他属性。