Beberapa mutasi di penyusun GraphQL for Data API
Penyusun API Data (DAB) mendukung menggabungkan beberapa operasi mutasi bersama-sama ke dalam satu transaksi. Beberapa mutasi mendukung skenario di mana Anda perlu membuat beberapa item milik entitas yang sama atau membuat beberapa item milik entitas terkait. Panduan ini memandu melalui skenario sampel menggunakan beberapa operasi mutasi.
Prasyarat
- Server dan database SQL yang ada.
- CLI penyusun API Data. Pasang CLI
- Klien database (SQL Server Management Studio, Azure Data Studio, dll.)
- Jika Anda tidak memiliki klien yang terinstal, instal Azure Data Studio
Membuat tabel
Mulailah dengan membuat dua tabel dasar untuk mewakili buku dan bab masing-masing. Buku memiliki hubungan satu-ke-banyak dengan bab yang sesuai.
Sambungkan ke database SQL menggunakan klien atau alat pilihan Anda.
Create tabel bernama
Books
dengan kolom , ,title
year
, danpages
id
.DROP TABLE IF EXISTS dbo.Books; CREATE TABLE dbo.Books ( id int NOT NULL PRIMARY KEY, title nvarchar(1000) NOT NULL, [year] int null, [pages] int null ) GO
Create tabel lain bernama
Chapters
dengan kolom ,name
, danpages
id
.book_id
Create kolom dengan hubungan kunci asing keid
kolomBooks
tabel.DROP TABLE IF EXISTS dbo.Chapters; CREATE TABLE dbo.Chapters ( id int NOT NULL PRIMARY KEY, [name] nvarchar(1000) NOT NULL, [pages] int null, book_id int NOT NULL, FOREIGN KEY (book_id) REFERENCES dbo.Books(id) ) GO
Validasi bahwa tabel Anda dibuat dengan beberapa kueri SQL umum.
SELECT * FROM dbo.Books
SELECT * FROM dbo.Chapters
Catatan
Pada titik ini, kueri tidak boleh mengembalikan data apa pun.
Membangun file konfigurasi
Sekarang, gunakan DAB CLI untuk membuat file konfigurasi, entitas, dan hubungan entitas.
Buka terminal
Simpan database SQL Anda string koneksi sebagai variabel shell bernama
SQL_CONNECTION_STRING
.SQL_CONNECTION_STRING="<your-sql-connection-string>"
$SQL_CONNECTION_STRING="<your-sql-connection-string>"
Jalankan
dab init
menentukan properti berikut.Nilai database-type
mssql
graphql.multiple-create.enabled
true
host-mode
development
connection-string
Gunakan variabel shell yang SQL_CONNECTION_STRING
dibuat pada langkah sebelumnya.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRING
Jalankan
dab add
untuk menambahkan entitas Buku yang menentukan properti berikut.Nilai source
dbo.Books
permissions
anonymous:*
dab add Book --source "dbo.Books" --permissions "anonymous:*"
Jalankan
dab add
lagi untuk menambahkan entitas Bab sekarang menentukan properti berikut.Nilai source
dbo.Chapters
permissions
anonymous:*
dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"
Jalankan
dab update
untuk membuat hubungan Buku ke Bab yang menentukan properti berikut.Nilai relationship
chapters
cardinality
many
dab update Book --relationship chapters --target.entity Chapter --cardinality many
Terakhir, jalankan
dab update
satu kali terakhir untuk membuat hubungan Bab ke Buku yang menentukan properti berikut.Nilai relationship
book
cardinality
one
dab update Chapter --relationship book --target.entity Book --cardinality one
Jalankan beberapa mutasi buat
Untuk membungkus hal-hal, gunakan DAB CLI untuk menjalankan API dan menguji titik akhir GraphQL menggunakan Banana Cake Pop.
Mulai mesin runtime menggunakan konfigurasi saat ini.
dab start
Navigasikan ke titik akhir relatif untuk aplikasi Anda yang
/graphql
sedang berjalan. Titik akhir ini membuka antarmuka Banana Cake Pop.Catatan
Secara default, ini akan menjadi
https://localhost:5001/graphql
.Tulis mutasi GraphQL untuk membuat tiga baris berbeda di dua tabel dalam database Anda. Mutasi ini menggunakan
Book
entitas danChapter
dalam satu operasi "beberapa buat". Gunakan properti berikut untuk mutasi.Jenis entitas ID Nama Halaman Tahun Buku 1 Pengantar penyusun API Data 200 2024 Bab 2 File konfigurasi 150 Bab 3 Berjalan 50 mutation { createBook( item: { id: 1 title: "Introduction to Data API builder" pages: 200 year: 2024 chapters: [ { id: 2 name: "Configuration files", pages: 150 } { id: 3 name: "Running", pages: 50 } ] } ) { id title pages year chapters { items { name pages } } } }
Amati output dari mutasi. Mutasi membuat data terkait untuk kedua jenis entitas.
{ "data": { "createBook": { "id": 1, "title": "Introduction to Data API builder", "pages": 200, "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } } }
Gunakan kueri GraphQL untuk mengambil semua buku dalam database Anda termasuk bab terkait.
query { books { items { pages title year chapters { items { name pages } } } } }
Catatan
Pada titik ini, kueri harus mengembalikan satu buku dengan dua bab.
Amati output dari kueri ini dengan array buku termasuk array bab berlapis mereka.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }
Sambungkan lagi ke database SQL menggunakan klien atau alat pilihan Anda.
Validasi bahwa data Anda berhasil dibuat menggunakan kueri SQL.
SELECT c.name AS chapterName, c.pages AS chapterPages, b.title AS bookName, b.year AS releaseYear FROM dbo.Chapters c LEFT JOIN dbo.Books b ON b.id = c.book_id
Catatan
Kueri ini harus mengembalikan dua rekaman bab.