Attualmente sto costruendo il front-end di un'applicazione usando AngularJS. Non ho molta conoscenza del back-end, ma alcuni dei dati che mi vengono offerti dallo sviluppatore back-end stanno diventando difficili da utilizzare, richiedendo un sacco di rejigging sul front-end, e sto iniziando a sospettare che potremmo gestirlo meglio. Volevo solo ottenere un feedback sulle migliori pratiche su come i dati dovrebbero essere offerti, in particolare se i dati dovrebbero essere estratti con riferimenti di id ad altri dati già pubblicati.
Quando si crea un oggetto, vengono chiamati alcuni metodi getAll per popolare elenchi a discesa o pulsanti di opzione. Ad esempio:
getAllStatus
[
{id: 1, status: 'new'},
{id: 2, status: 'used'},
{id: 2, status: 'handMade'}
]
getAllType
[
{id: 1, type: 'flatHead', length: 'long'},
{id: 2, type: 'machineOval', length: 'long'},
{id: 3, type: 'machinePhillips', length: 'short'},
{id: 4, type: 'hollowHeadSet', length: 'short'},
{id: 5, type: 'selfTapping', length: 'medium'}
]
Dopo che un articolo è stato creato, ecco un esempio di un pacchetto di dati che potrei ottenere dal server per quell'oggetto specificato. Immagino che idType e idStatus siano chiavi esterne ai set di dati precedenti:
{
id: 0,
idStatus: 2,
label: 'sample',
idType: 4,
idRestriction: 3
}
Lo sviluppatore di back-end dice che poiché ho ricevuto tutti i dati con i metodi getAll già che dovrei semplicemente estrarre i dati dagli array già inviati che devo visualizzare all'utente. Mentre questo è possibile, è diventato un po 'un mal di testa da gestire. Ad esempio, se voglio ottenere lo stato o il tipo da uno di questi array, rimappare ogni array, iniettare i servizi Angular ovunque, eseguire i filtri per estrarre gli oggetti da id e impostare i dati su nuove proprietà sul modello. Quando si utilizza semplicemente l'array, l'indice non corrisponde all'id, quindi devo decrementare l'id.
Dal mio punto di vista, sarebbe molto più semplice se mi venisse assegnato un oggetto con valori stringa anziché ID, ad esempio:
{
id: 0,
status: 'new',
label: 'sample',
type: 'hollow-head set',
restriction: 'none'
}
Immagino di non sapere veramente quale sia la migliore pratica qui, ma la quantità di manipolazione che ho a che fare con i dati sul front-end si sente davvero sbagliata. Apprezzerei davvero qualsiasi feedback che qualcuno potrebbe avere. Grazie in anticipo.