Prisma: Каков рабочий процесс?

Только начал использовать Prisma как способ интеграции GraphQL и MySQL в новый проект, над которым я работаю. Это здорово, мне нравится, как просто все излагается. У меня есть несколько вопросов, которые меня беспокоят, относительно рабочего процесса, которому нужно следовать при разработке с помощью Prisma.

Например:

Вчера я установил базовый сервер Prisma и GraphQL согласно руководству. Все сработало. У меня есть только один тип, смоделированный в моем datamodel.graphql.

Сегодня утром я просыпаюсь и начинаю работать над другим типом и добавляю его в свой datamodel.graphql. Docker запущен, я обновляю index.js резолверами для поддержки новой модели и ее запросов / мутаций. Однако, когда дело доходит до запуска системы с использованием node ./index.js, я получаю сообщение об ошибке, что она не знает о новой модели. Я подозреваю, что схема Prisma не обновлялась / обновлялась, поэтому я запускаю graphql get-schema --project prisma, но он сообщает мне, что ничего не изменилось.

Очевидно, я что-то упускаю. Я работаю с Prisma не так, как хотелось бы. Может ли кто-нибудь разъяснить мне порядок событий, которые должны произойти, чтобы все шло гладко?

Учебное пособие отлично подходит для начала работы, но мне кажется, что оно не очень хорошо знакомит разработчиков с процессом использования Prisma в повседневном непрерывном цикле разработки.

Любая информация / идеи / ссылки были бы очень полезны.

Большое спасибо,

А

ОБНОВИТЬ

Для всех, кто немного заблудился в рабочем процессе. Взгляните на ссылку CLI. Это очень полезно для всех задач, связанных с Prisma (не обязательно для всего, что связано с вашим сервером GraphQL). ССЫЛКА НА САЙТ

TL; DR:

Вам необходимо повторно развертывать службу prisma каждый раз, когда модель данных изменяется, чтобы сгенерированный prisma.graphql можно было обновить новыми функциями для работы с БД. Я запустил prisma deploy и вуаля!

Какое руководство вы использовали для начала работы с Prisma?

nburk 14.11.2018 12:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
7
1
1 140
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вам не хватает шага prisma deploy.

Вы путаете модель данных (обычно называемую datamodel.graphql) со схемой базы данных Prisma (обычно называемой prisma.graphql).

Модель данных используется Prisma для автоматического создания схемы базы данных Prisma:

Пожалуйста, следуйте этой сути, чтобы увидеть разницу между ними более подробно: https://gist.github.com/nikolasburk/eef24cd0d907b4a3e073723054cf847d

Чтобы сделать его более точным, prisma deploy должен применить ваши изменения и перенести базовую схему базы данных. Но вам также необходимо выполнить prisma generate для обновления автоматически сгенерированного клиента Prisma, чтобы он мог предоставлять методы CRUD для любой новой добавленной модели.

tnkh 08.05.2019 09:16

Не забудьте развернуть свою модель данных с prisma deploy.

Здесь у вас есть полный рабочий пример: https://github.com/alan345/naperg

В дополнение к команде prisma deploy, которая запускается в CLI, не забудьте также ввести команду prisma generate, Prisma generate - это дополнительный шаг, который создает функции javascript для всех ваших автоматически сгенерированных операций CRUD из вашей базы данных.

Возможно, вам не нужен этот дополнительный уровень косвенности (или абстракции), хотя Prisma рекомендует его по ряду причин (Призма Архитектура)

Существует также обработчик после развертывания, который вы можете ввести в файл prisma.yml, который затем автоматически запускает вашу команду prisma generate каждый раз, когда вы запускаете prisma deploy. Остается запомнить на один шаг меньше.

      // prisma.yml file

datamodel: datamodel.prisma
generate:
  - generator: javascript-client
    output: ../src/generated/prisma-client

hooks:
  post-deploy:
    - prisma generate

Я не говорил об использовании клиентских функций prisma и о том, как к ним можно получить доступ через контекст, но очень полезное и актуальное руководство стоит того: Как в GraphQL

Другие вопросы по теме