Megosztás a következőn keresztül:


Több mutáció a GraphQL for Data API Builderben

A Data API Builder (DAB) támogatja a több mutációs művelet egyetlen tranzakcióba való kombinálását. Több mutáció támogatja azokat a forgatókönyveket, amelyekben több, ugyanahhoz az entitáshoz tartozó elemet kell létrehoznia, vagy egy kapcsolódó entitáshoz tartozó több elemet kell létrehoznia. Ez az útmutató több mutációs művelettel végigvezet egy mintaforgatókönyven.

Előfeltételek

Táblák létrehozása

Először hozzon létre két alaptáblát, amelyek a könyveket és a hozzájuk tartozó fejezeteket jelölik. A könyvek egy-a-többhöz kapcsolatban vannak a hozzájuk tartozó fejezetekkel.

  1. Csatlakozzon az SQL-adatbázishoz az előnyben részesített ügyfél vagy eszköz használatával.

  2. Hozzon létre egy Books nevű táblát, amely id, title, year, és pages oszlopokat tartalmaz.

    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
    
  3. Hozzon létre egy másik táblát, amely tartalmazza a Chapters, id, name és pages oszlopokat. Hozzon létre egy olyan oszlopot book_id , amely idegenkulcs-kapcsolatot tartalmaz a idBooks tábla oszlopával.

    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
    
  4. Ellenőrizze, hogy a táblák néhány gyakori SQL-lekérdezéssel lettek-e létrehozva.

    SELECT * FROM dbo.Books
    
    SELECT * FROM dbo.Chapters
    

    Megjegyzés:

    Ezen a ponton a lekérdezések nem adnak vissza adatokat.

Konfigurációs fájl összeállítása

Most a DAB CLI használatával hozzon létre konfigurációs fájlt, entitásokat és entitáskapcsolatokat.

  1. Terminál megnyitása

  2. Tárolja az SQL-adatbázis kapcsolati karakterláncát SQL_CONNECTION_STRING nevű rendszerhéjváltozóként.

    SQL_CONNECTION_STRING="<your-sql-connection-string>"
    
    $SQL_CONNECTION_STRING="<your-sql-connection-string>"
    
  3. Futtassa dab init a következő tulajdonságokat megadva.

    Érték
    database-type mssql
    graphql.multiple-create.enabled true
    host-mode development
    connection-string Használja az SQL_CONNECTION_STRING előző lépésben létrehozott rendszerhéjváltozót.
    dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRING
    
  4. Futtassa dab add a book entitás hozzáadásához, amely a következő tulajdonságokat adja meg.

    Érték
    source dbo.Books
    permissions anonymous:*
    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  5. Futtassa dab add újra a következő tulajdonságok megadásával egy Fejezet entitás hozzáadása céljából.

    Érték
    source dbo.Chapters
    permissions anonymous:*
    dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"  
    
  6. Futtassa a dab update parancsot a Book to Chapter kapcsolat létrehozásához, megadva a következő tulajdonságokat.

    Érték
    relationship chapters
    cardinality many
    dab update Book --relationship chapters --target.entity Chapter --cardinality many
    
  7. Végül futtassa dab update még egyszer a Fejezet a könyvhez kapcsolatot, amely a következő tulajdonságokat adja meg.

    Érték
    relationship book
    cardinality one
    dab update Chapter --relationship book --target.entity Book --cardinality one
    

Több létrehozási mutáció végrehajtása

A dolgok becsomagolásához használja a DAB CLI-t az API futtatására és a GraphQL-végpont tesztelésére a Banana Cake Pop használatával.

  1. Indítsa el a futtatókörnyezeti motort az aktuális konfigurációval.

    dab start
    
  2. Lépjen a /graphql relatív végponthoz a futó alkalmazás esetén. Ez a végpont megnyitja a Banana Cake Pop felületet.

    Megjegyzés:

    Alapértelmezés szerint ez a következő lenne https://localhost:5001/graphql: .

  3. Hozzon létre egy GraphQL-mutációt, amely három különböző sort hoz létre az adatbázis két táblájában. Ez a mutáció mind a Book, mind a Chapter entitást egyetlen "többszörös létrehozási" műveletben használja. Használja a következő tulajdonságokat a mutációhoz.

    Entitás típusa azonosító Név Oldalak Év
    Könyv 1 Bevezetés a Data API Builderbe 200 2024
    Fejezet 2 Konfigurációs fájlok 150
    Fejezet 3 Futás 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
          }
        }
      }
    }
    
  4. Figyelje meg a mutáció kimenetét. A mutáció mindkét entitástípushoz kapcsolódó adatokat hozott létre.

    {
      "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
              }
            ]
          }
        }
      }
    }
    
  5. GraphQL-lekérdezéssel lekérheti az adatbázis összes könyvét, beleértve a kapcsolódó fejezeteket is.

    query {
      books {
        items {
          pages
          title
          year
          chapters {
            items {
              name
              pages
            }
          }
        }
      }
    }
    

    Megjegyzés:

    Ezen a ponton a lekérdezésnek két fejezettel kell visszaadnia az egyetlen könyvet.

  6. Figyelje meg a lekérdezés kimenetét egy könyvtömbdel, beleértve a fejezetek beágyazott tömbét is.

    {
      "data": {
        "books": {
          "items": [
            {
              "pages": 200,
              "title": "Introduction to Data API builder",
              "year": 2024,
              "chapters": {
                "items": [
                  {
                    "name": "Configuration files",
                    "pages": 150
                  },
                  {
                    "name": "Running",
                    "pages": 50
                  }
                ]
              }
            }
          ]
        }
      }
    }
    
  7. Csatlakozzon ismét az SQL-adatbázishoz az előnyben részesített ügyfél vagy eszköz használatával.

  8. Ellenőrizze, hogy az adatok sikeresen létrejöttek-e SQL-lekérdezéssel.

    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
    

    Megjegyzés:

    A lekérdezésnek két fejezetrekordot kell visszaadnia.