Data API builder için GraphQL'de birden çok mutasyon
Data API builder (DAB), birden çok mutasyon işlemini tek bir işlemde birleştirmeyi destekler. Birden çok mutasyon, aynı varlığa ait birden çok öğe oluşturmanız veya ilgili bir varlığa ait birden çok öğe oluşturmanız gereken senaryoları destekler. Bu kılavuzda, çoklu mutasyon operasyonu kullanılarak örnek bir senaryoya yol gösterilir.
Önkoşullar
- Mevcut SQL sunucusu ve veritabanı.
- Veri API'si oluşturucu CLI' sı. CLI’yı yükleme
- Veritabanı istemcisi (SQL Server Management Studio, Azure Data Studio vb.)
- Yüklü bir istemciniz yoksa Azure Data Studio'yu yükleyin
Tablo oluşturma
Kitapları ve ilgili bölümlerini temsil eden iki temel tablo oluşturarak başlayın. Kitapların ilgili bölümleriyle bire çok ilişkisi vardır.
Tercih ettiğiniz istemciyi veya aracı kullanarak SQL veritabanına bağlanın.
, ,
year
title
vepages
sütunlarıylaid
adlıBooks
bir tablo İçerik Oluşturucu.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
,
name
vepages
sütunlarıylaid
adlıChapters
başka bir tablo İçerik Oluşturucu. Tablonun sütunuyla yabancı anahtar ilişkisi olanid
birbook_id
sütunBooks
İçerik Oluşturucu.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
Tablolarınızın bazı yaygın SQL sorgularıyla oluşturulduğunu doğrulayın.
SELECT * FROM dbo.Books
SELECT * FROM dbo.Chapters
Not
Bu noktada sorgular herhangi bir veri döndürmemelidir.
Yapılandırma dosyası oluşturma
Şimdi, bir yapılandırma dosyası, varlıklar ve varlık ilişkileri oluşturmak için DAB CLI'yi kullanın.
Terminal açma
SQL veritabanınızı bağlantı dizesi adlı
SQL_CONNECTION_STRING
bir kabuk değişkeni olarak depolayın.SQL_CONNECTION_STRING="<your-sql-connection-string>"
$SQL_CONNECTION_STRING="<your-sql-connection-string>"
Aşağıdaki özellikleri belirterek komutunu çalıştırın
dab init
.Değer database-type
mssql
graphql.multiple-create.enabled
true
host-mode
development
connection-string
SQL_CONNECTION_STRING
Önceki adımda oluşturulan kabuk değişkenini kullanın.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRING
Komutunu çalıştırarak
dab add
aşağıdaki özellikleri belirten bir Book varlığı ekleyin.Değer source
dbo.Books
permissions
anonymous:*
dab add Book --source "dbo.Books" --permissions "anonymous:*"
Şimdi aşağıdaki özellikleri belirten bir Bölüm varlığı eklemek için yeniden çalıştırın
dab add
.Değer source
dbo.Chapters
permissions
anonymous:*
dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"
Aşağıdaki özellikleri belirten Bölüme Kitap ilişkisini oluşturmak için komutunu çalıştırın
dab update
.Değer relationship
chapters
cardinality
many
dab update Book --relationship chapters --target.entity Chapter --cardinality many
Son olarak, aşağıdaki özellikleri belirten Bölüm-Kitap ilişkisini oluşturmak için son bir kez çalıştırın
dab update
.Değer relationship
book
cardinality
one
dab update Chapter --relationship book --target.entity Book --cardinality one
Çoklu oluşturma mutasyonu yürütme
Öğeleri sarmak için DAB CLI kullanarak API'yi çalıştırın ve Banana Cake Pop kullanarak GraphQL uç noktasını test edin.
Geçerli yapılandırmayı kullanarak çalışma zamanı altyapısını başlatın.
dab start
Çalışan uygulamanızın
/graphql
göreli uç noktasına gidin. Bu uç nokta, Banana Cake Pop arabirimini açar.Not
Varsayılan olarak, bu olacaktır
https://localhost:5001/graphql
.Veritabanınızdaki iki tabloda üç ayrı satır oluşturmak için bir GraphQL mutasyonu yazın. Bu mutasyon tek bir "çoklu oluşturma" operasyonunda hem hem
Chapter
deBook
varlıkları kullanır. Mutasyon için aşağıdaki özellikleri kullanın.Varlık türü ID Name Sayfalar Yıl Book 1 Veri API'sini oluşturucuya giriş 200 2024 Bölüm 2 Yapılandırma dosyaları 150 Bölüm 3 Çalışma 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 } } } }
Mutasyondan elde eden çıkışı gözlemleyin. Mutasyon her iki varlık türü için de ilgili verileri oluşturdu.
{ "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 } ] } } } }
Veritabanınızdaki tüm kitapları ilgili bölümleri de dahil olmak üzere almak için GraphQL sorgusu kullanın.
query { books { items { pages title year chapters { items { name pages } } } } }
Not
Bu noktada, sorgunun iki bölümü olan tek bir kitabı döndürmesi gerekir.
İç içe bölüm dizileri de dahil olmak üzere bir dizi kitapla bu sorgunun çıkışını gözlemleyin.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }
Tercih ettiğiniz istemciyi veya aracı kullanarak SQL veritabanına yeniden bağlanın.
Verilerinizin bir SQL sorgusu kullanılarak başarıyla oluşturulduğunu doğrulayın.
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
Not
Bu sorgu iki bölüm kaydı döndürmelidir.