Modül dersleri (2/2)
JSON toplama işlevleri
JSON Toplama İşlevleri
Entegrasyon çift yönlüdür. Veritabanının kendisini JSON'u ayrıştırmakla sınırlaması gerekmez: onu oluşturabilir. API'nizin ve Node.js'nizin, iç içe geçmiş nesneleri JSON'a serileştirme gibi kirli, yoğun işleri yapmak zorunda olmadığını, çünkü DB'nin bunları doğrudan diskten oluşturulmuş olarak teslim ettiğini hayal edin.
Nesneler ve Diziler Oluşturma
Klasik toplu toplama veya dize birleştirme (String_agg) yerine şu işlevlere yöneliyoruz:
json_build_object(key, value, ...)veyajsonb_build_object(...)json_agg(...)veyajsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Tamamen uyumlu { "name": "...", "city": "..." } içeren yazdırılmış satırları göreceksiniz.
'Müşteriler' tablosundan, verileri \`json_build_object\` ile eşlenmiş JSON satırları olarak döndürün. İki anahtarı eşleyin: 'isim', 'ad_adı'na ve 'posta', 'e-posta'ya bağlı. Sütun için \`AS customer_doc\` kullanın.
İpucu göster
json_build_object('ad', ad_ad, 'posta', e-posta)
3 denemeden sonra çözüm mevcut
Her sipariş için (\`order_id\`), içerdiği tüm \`product_id\`leri tek bir birimde oluşturun. 'order_items' tablosundan \`GROUP BY order_id\` komutunu çalıştırın. Daha sonra \`order_id\` seçeneğini seçin ve yalnızca \`product_id\` verilerini bir JSON dizisinde (JSON_AGG) biriktirin. Diziyi \`ürünler\` olarak adlandırın.
İpucu göster
JSON_AGG(product_id) artı verileri toplamak için klasik bir grup by.
3 denemeden sonra çözüm mevcut