将 Prisma GraphQL-Yoga 用作 Express/Node 应用程序:如何在服务器端调用 GraphQL 突变?
Posted
技术标签:
【中文标题】将 Prisma GraphQL-Yoga 用作 Express/Node 应用程序:如何在服务器端调用 GraphQL 突变?【英文标题】:Using Prisma GraphQL-Yoga as an Express/Node application: how can I call GraphQL mutations server-side? 【发布时间】:2019-08-03 08:31:49 【问题描述】:我正在尝试在 Node 上进行图像处理,并且正在使用 Prisma GraphQL-Yoga 服务器来管理作业队列。将作业排队的 React/Apollo 前端,也就是说,它在服务器上调用 Mutation,通过 Prisma 将作业存储在数据库中。图片是使用multer
上传的,利用 GraphQL-Yoga 服务器通过server.express
暴露下方的 Express 服务器这一事实——我假设可以将 GraphQL-Yoga 服务器用作常规 Express /Node 服务器,当我需要时。
我的问题是:当每项工作完成后,如何在我的数据库中将工作状态更改为completed
?当然,我可以直接访问prisma
,就像我在解析器中所做的那样,但我认为使用 Mutation 可能更优雅,也就是说,使用 GraphQL 保留对数据库的所有访问。如前所述,我正在使用 React 前端的 Apollo。我可以从后端“调用”突变吗?我该怎么做?
感谢您的任何见解!我是 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
`
)
或类似的突变。
这是我能够从服务器中其他位置访问数据的唯一方法。不确定这是否是您已经在做的事情,但以防万一它可以帮助您。
干杯:)
【讨论】:
以上是关于将 Prisma GraphQL-Yoga 用作 Express/Node 应用程序:如何在服务器端调用 GraphQL 突变?的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 Prisma 在 GraphQL-yoga 中使用片段
Type as property 使用 graphql-yoga 和 prisma 解析为 null