Lezioni del modulo (2/2)
Funzioni di Aggregazione JSON
Funzioni di Aggregazione JSON
L'integrazione è bidirezionale. Il database non deve limitarsi a parsarli: può costruirli. Immagina se la tua API e Node.js non dovessero far lo sporco ed intensivo sforzo della serializzazione JSON degli oggetti annidati, se il DB glieli sparasse già fatti su disco.
Costruire Oggetti e Array
Invece della classica aggregazione o concatenazione di stringhe in massa (String_agg), noi ricorriamo alle funzioni:
json_build_object(chiave, valore, ...)ojsonb_build_object(...)json_agg(...)ojsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Troverai stampate a video row contenenti { "name": "...", "city": "..." } perfettamente compliant.
Dalla tabella 'customers', restituisci i dati sotto forma di righe Json, mappate con \`json_build_object\`. Mappa due chiavi: 'name' associata a 'first_name', e 'mail' associata a 'email'. Usa \`AS customer_doc\` per la colonna.
Mostra suggerimento
json_build_object('name', first_name, 'mail', email)
Soluzione disponibile dopo 3 tentativi
Per ogni ordine (\`order_id\`), crea in un unicum tutti i \`product_id\` che include. Dalla tabella 'order_items', esegui \`GROUP BY order_id\`. Dunque seleziona \`order_id\` ed accumula nel JSON array (JSON_AGG) i soli dati di \`product_id\`. Chiama l'array \`products\`.
Mostra suggerimento
JSON_AGG(product_id) e usa un group by classico per accollarci i dati.
Soluzione disponibile dopo 3 tentativi