Использование Prisma GraphQL-Yoga в качестве приложения Express / Node: как я могу вызвать мутации GraphQL на стороне сервера?

#node.js #graphql #multer #prisma #prisma-graphql

#node.js #graphql #мультер #prisma #prisma-graphql

Вопрос:

Я пытаюсь выполнить обработку изображений на Node и использую сервер Prisma GraphQL-Yoga для управления очередью заданий. Интерфейс React / Apollo, который ставит задания в очередь, то есть он вызывает мутацию на сервере, который хранит задания в БД через Prisma. Изображения загружаются с помощью multer , используя тот факт, что сервер GraphQL-Yoga предоставляет сервер Express под ним с помощью server.express — Я предполагаю, что можно использовать сервер GraphQL-Yoga в качестве обычного сервера Express / Node, когда мне нужно.

Мой вопрос: как мне изменить статус заданий на completed в моей базе данных, когда каждое задание выполнено? Конечно, я могу получить доступ prisma напрямую, как я делаю в своих решателях, но я подумал, что было бы более элегантно использовать мутацию, то есть сохранить все обращения к БД с использованием GraphQL. Как уже было сказано, я использую Apollo из интерфейса React. Могу ли я «вызвать» мутацию из серверной части? Как я могу это сделать?

Спасибо за любую информацию! Я новичок в GraphQL и иногда пропускаю лес для деревьев…

Ответ №1:

Я делаю что-то подобное на своем сервере, я могу показать вам, как я это делаю, если это поможет вам.

Итак, я экспортирую экземпляр Prisma db следующим образом:

 import { Prisma } from 'prisma-binding';
export const db = new Prisma({
  typeDefs: 'src/generated/prisma.graphql',
  endpoint: process.env.PRISMA_ENDPOINT,
  secret: process.env.PRISMA_SECRET,
  debug: true,
});
  

Затем, где бы я ни захотел это использовать, я просто импортирую это import { db } from '../config/config'; , и тогда у меня есть доступ к решателям и т. Д:

 db.query.user({}, ` { 
    id
    name
  } `
)
  

Или аналогичный для мутаций.

Это единственный способ, которым я смог получить доступ к данным из других мест на моем сервере. Не уверен, что это то, что вы уже делаете, но на всякий случай это может вам помочь.

Приветствия 🙂