Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Построитель API данных (DAB) поддерживает объединение нескольких операций мутации в одну транзакцию. Несколько мутаций поддерживают сценарии, в которых необходимо создать несколько элементов, принадлежащих одной сущности, или создать несколько элементов, принадлежащих связанной сущности. В этом руководстве описывается пример сценария с помощью нескольких операций мутации.
Предпосылки
- Существующий СЕРВЕР SQL и база данных.
- CLI инструмента построения API данных. Установка интерфейса командной строки
- Клиент базы данных (например, SQL Server Management Studio и т. д.)
- Если у вас нет клиента, установите SQL Server Management Studio.
Создание таблиц
Начните с создания двух базовых таблиц для представления книг и их соответствующих глав. Книги имеют отношение "один ко многим" с соответствующими главами.
Подключитесь к базе данных SQL с помощью предпочтительного клиента или средства.
Создайте таблицу с именем
Booksс колонкамиid,title,yearиpages.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Создайте другую таблицу с именем
Chapters, сid,nameиpagesстолбцами.book_idСоздайте столбец с внешним ключом связи соidстолбцомBooksтаблицы.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Убедитесь, что таблицы созданы с помощью некоторых распространенных запросов SQL.
SELECT * FROM dbo.BooksSELECT * FROM dbo.ChaptersЗамечание
На этом этапе запросы не должны возвращать никакие данные.
Файл конфигурации сборки
Теперь используйте CLI DAB для создания файла конфигурации, сущностей и взаимосвязей сущностей.
Откройте окно терминала.
Сохраните строку подключения к базе данных SQL в качестве переменной оболочки с именем
SQL_CONNECTION_STRING.SQL_CONNECTION_STRING="<your-sql-connection-string>"$SQL_CONNECTION_STRING="<your-sql-connection-string>"Запустите
dab init, указав следующие свойства.Ценность database-typemssqlgraphql.multiple-create.enabledtruehost-modedevelopmentconnection-stringИспользуйте переменную оболочки SQL_CONNECTION_STRING, созданную на предыдущем шаге.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRINGВыполните команду
dab add, чтобы добавить сущность Book , указав следующие свойства.Ценность sourcedbo.Bookspermissionsanonymous:*dab add Book --source "dbo.Books" --permissions "anonymous:*"Запустите
dab addеще раз, чтобы добавить сущность "Глава ", указав следующие свойства.Ценность sourcedbo.Chapterspermissionsanonymous:*dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"Выполните команду
dab update, чтобы создать связь Book to Chapter , указав следующие свойства.Ценность relationshipchapterscardinalitymanydab update Book --relationship chapters --target.entity Chapter --cardinality manyНаконец, запустите
dab updateеще раз, чтобы создать отношение Главы к Книге, указав следующие свойства.Ценность relationshipbookcardinalityonedab update Chapter --relationship book --target.entity Book --cardinality one
Выполнение нескольких операций мутации создания
Чтобы завершить процесс, используйте CLI DAB для запуска API и проверки конечной точки GraphQL с помощью Banana Cake Pop.
Запустите подсистему среды выполнения с помощью текущей конфигурации.
dab startПерейдите к относительной конечной точке
/graphqlдля работающего приложения. Эта точка доступа открывает интерфейс Banana Cake Pop.Замечание
По умолчанию эта конечная точка будет
https://localhost:5001/graphql.Создайте мутацию GraphQL, чтобы создать три отдельные строки в двух таблицах в базе данных. Эта мутация использует сущности
BookиChapterв одной операции "множественное создание". Используйте следующие свойства для мутации.Тип сущности Идентификатор Имя Страницы Год Книга 1 Общие сведения о построителе API данных 200 2024 Глава 2 Файлы конфигурации сто пятьдесят Глава 3 Бег 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 } } } }Просмотрите выходные данные из мутации. Мутация создала связанные данные для обоих типов сущностей.
{ "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 } ] } } } }Используйте запрос GraphQL для получения всех книг в базе данных, включая связанные с ними главы.
query { books { items { pages title year chapters { items { name pages } } } } }Замечание
На этом этапе запрос должен вернуть одну книгу с двумя главами.
Просмотрите выходные данные этого запроса с массивом книг, включая вложенный массив глав.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }Снова подключитесь к базе данных SQL с помощью предпочтительного клиента или средства.
Убедитесь, что данные были успешно созданы с помощью 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Замечание
Этот запрос должен возвращать две записи раздела.