将 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:解析器需要异步吗?

无法通过 Prisma 在 GraphQL-yoga 中使用片段

Type as property 使用 graphql-yoga 和 prisma 解析为 null

markdown 来自graphql-yoga(后端)的prisma服务器连接测试

将 primsa 模式导入 graphql 模式

使用 Apollo + GraphQL 将 Prisma 1 升级到 Prisma 2