2017-05-30 5 views
2

Einfache Frage, aber ich würde gerne wissen, wie dies effektiv zu tun. Sehr anfällig für negative Stimmen.Teilen Sie das gleiche Modell zwischen Front-End und Server

Ich habe ein Modell, das ich zwischen Front-End und Back-End teilen möchte. Für Front-End manuell möchte ich einige Attribute hinzufügen. Diese Attribute sind für das Back-End nicht erforderlich.

oben ist ausreichend für Server (Back-End).

Aber vor Ende muss ich einen zusätzlichen thing.Based auf Wert tun, ich Farbe Attribut definieren müssen (Wert < 10, Farbe grün etc ..)

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

Also, wenn ich die Aktualisierung ModelA Zurück zum Server nach dem Editieren von ID/Name, was auch immer ich nicht wollen, Farbattribut zu übergeben.

Mit Einzelmodell, wie könnte ich das erreichen?

Antwort

2

denke ich, was Sie in diesem Fall suchen schneiden (siehe zum Beispiel dieses: How to get a subset of a javascript object's properties)

Sie effektiv sind eine Teilmenge der Eigenschaften des Objekts nehmen,

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

EDIT: Auch ich bin mir nicht sicher, wie es ist schlecht für Sie, mehr Eigenschaften auf Ihrem Objekt zu haben. Es hängt von Ihrem Framework und Ihrer Abfrage ab. Ich würde einfach die zusätzlichen Eigenschaften meines Objekts ignorieren, wenn ich es am Backend-Teil erhalte.

+0

Mein Szenario ist etwas anders. Ich werde ModelA vom Server holen und ich möchte 1 zusätzliches Attribut hinzufügen. Während der Aktualisierung auf den Server muss das extra hinzugefügte Attribut nicht übergeben werden. Das extra hinzugefügte Attribut wird nur im Frontend benötigt. –

+0

Mehr unnötige Eigenschaft ist schlecht, weil wir mehr Daten an Back-End senden. –

+0

Dann sehe ich nicht, wie Sie das mit einem einzigen Modell erreichen können. Sie haben ModelA, das reale Datenmodell von Ihrem Server, und ModelB ist das, was ich ein ViewModel nennen würde (nicht sicher, ob es der richtige Begriff hier ist). Ich würde das "Transtyping" im Service machen, der für das Senden Ihres Objekts verantwortlich ist. – Pac0

Verwandte Themen