Tipi annidati e non nidificati in GraphQL (o tipi annidati in modo ricorsivo)

0

Sto iniziando a immergermi in GraphQL, e una cosa su cui non sono stato in grado di trovare una risposta solida è come e se si dovrebbero usare tipi annidati o no, o anche schemi di progettazione efficaci quando si utilizza GraphQL. Sfortunatamente la maggior parte dei blog / tutorial / libri che sto leggendo coprono solo esempi molto semplici al meglio come un blog (i post contengono commenti) o un organizzatore di eventi (le persone vanno agli eventi).

Dire che sto provando a modellare un generatore di moduli. Potrei adottare l'approccio nidificato:

type Form {
  id: ID!
  components: [Components]
}

interface Component {
  id: ID!
}

type ContainerComponent implements Component {
  id: ID!
  children: [Component]!
}

type TextInputCompoent implements Component {
  id: ID!
  defaultValue: String
}

type DropdownInputComponent implements Component {
  id: ID!
  values: [String]!
  defaultValue: [String]
}

Qui utilizzo un'interfaccia per rappresentare un "Componente" generico che posso iniettare nel Form, ma ora come gestisco le Mutazioni? Sembrerebbe che ora avrei bisogno di una mutazione separata per ogni possibile combinazione di componenti di tipo I in grado di creare? Ciò sembra disordinato al meglio, e non sono nemmeno sicuro di quali sarebbero i pezzi di Query e Mutation con questa ricorsione.

L'alternativa è quella di creare un mega-componente e inserire tutti i valori possibili al suo interno:

type Form {
  id: ID!
  components: [Component]
}

type Component {
  id: ID!
  children: [Component]
  defaultValue: [String]
  values: [String]
}

Ma questo sembra troppo generico e fa sì che uno non sia in grado di definire efficacemente le regole dei dati, come imporre un Dropdown richiede un elenco di valori.

    
posta CodeChimp 15.08.2018 - 13:56
fonte

0 risposte

Leggi altre domande sui tag