Вам необходим Prisma «секрет» для защиты вашей конечной точки, чтобы только вы и ваши приложения могли получать доступ к данным / изменять их. Призма называет это managementApiSecret
(см. здесь ).
Я не очень знаком с консолью Prisma, но если вы развернете свой сервер Prisma на Heroku с помощью чего-то вроде prisma.yml
файла, тогда вы можете указать строку secret:
, например: secret: ${env: PRISMA_SECRET}
. Затем вы можете установить Config Var в настройках вашего сервера Prisma на Heroku, где ключом является PRISMA_SECRET
, а значением является случайная строка. Я считаю, что вы хотите сделать то же самое при использовании команды prisma deploy
. Так что вы prisma.yml
должны выглядеть примерно так:
endpoint: ${env:PRISMA_ENDPOINT_PROD}
datamodel: datamodel.graphql
secret: ${env:PRISMA_SECRET}
hooks:
post-deploy:
- graphql get-schema -p prisma
Затем вам нужно будет указать тот же секрет на вашем сервере Yoga, чтобы он мог получить доступ к серверу Prisma. С этим трудно справиться, не увидев код для сервера Yoga, но мой использует пакет prisma-binding
, подобный следующему:
const { Prisma } = require('prisma-binding');
const db = new Prisma({
typeDefs: 'src/generated/prisma.graphql',
endpoint: process.env.PRISMA_ENDPOINT_PROD,
secret: process.env.PRISMA_SECRET,
debug: false, // Turn on to console.log queries and mutations
});
module.exports = db;
Вы можете видеть, что сервер Yoga подключается к базе данных Prisma с указанным секретом. Сервер Yoga развернут в Heroku, и я указал переменную среды PRISMA_SECRET
в настройках Heroku для сервера Yoga.
Однако эта настройка не позволит вам перейти к конечной точке Prisma в вашем браузере и вручную запрашивать и изменять данные в вашей базе данных через игровую площадку GraphQL. Там может быть способ обойти это, но я не уверен, как. Также обратите внимание, что это не даст вам хороший интерфейс входа в систему, который, как вам кажется, предлагает Хасура.
Если вы хотите, чтобы больше кода следовало, вы можете просмотреть этот GitHub repo от Wes Bos, который он использует для своего курса под названием «Fullstack Advanced React & GraphQL».