2015-12-16 4 views

risposta

5

Non esiste una funzione di aggregazione automatica in GraphQL.

È possibile aggiungere un campo denominato summary e nella funzione resolve calcolare i totali.

5

... ha bisogno di graphql per restituire i conteggi aggregati? Può essere fatto?

Sì, può essere fatto.

GraphQL lo fa automaticamente per te? No, perché non sa/cura di dove hai la tua fonte di dati.

Come? GraphQL non impone come si ottiene/mutano i dati che l'utente ha interrogato. Spetta alla tua implementazione ottenere i dati aggregati richiesti. È possibile ottenere dati aggregati direttamente da MongoDB e restituirli, oppure ottenere tutti i dati necessari dall'origine dati e effettuare autonomamente l'aggregazione.

11

Definire un nuovo tipo di GraphQL che è un oggetto che contiene un elenco e un numero. Il numero verrebbe definito da una funzione resolver.

Sul server GraphQL è possibile definire la funzione resolver e, come parte di ciò, è necessario scrivere il codice che esegue i calcoli e le query necessarie per ottenere i conteggi aggregati.

Questo è simile a come si dovrebbe scrivere un serializzatore oggetto per un API REST o un endpoint API REST personalizzato che corre qualsiasi query di database sono necessari per calcolare i conteggi aggregati.

Il punto di forza di GraphQL è che consente al frontend più potenza nel determinare quali dati vengono specificatamente restituiti. Alcune delle cose che scrivi in ​​GraphQL saranno le stesse di quelle che dovresti scrivere per un'API REST.

+3

Buona spiegazione! Penso che il principale punto da asporto sia che GraphQL non fa i tuoi calcoli e le tue aggregazioni per te. Tutto ciò dovrebbe accadere nella funzione di risoluzione dell'oggetto query GraphQL, che deve essere detto di recuperare i dati pre-aggregati necessari, funziona su di esso e quindi restituisce il risultato. – batjko