GraphQL:成功突变后如何发出警告?

2023-12-23

让我们想象一下我有一个createPost插入新帖子的突变。在典型的应用程序中,该突变可以:

  • 成功,返回一个Post.
  • 失败,抛出错误(我使用阿波罗错误 https://github.com/thebigredgeek/apollo-errors来处理这个)。

我想要实现的是一个中间场景,其中突变成功(返回Post); but also以某种方式向用户返回警告(例如Your post is similar to post XYZ或类似)。

实现这个的一个好的 GraphQL 模式是什么?添加一个warning场到Post类型似乎有点奇怪,但话又说回来,我不知道如何返回两个Post and a Warning在同一个突变中?有任何想法吗?

(请注意,我使用此场景作为示例,我对返回额外突变后数据的一般模式感兴趣,而不是专门查找类似的帖子)


我的所有突变都返回包装有效负载类型而不是单个值类型(例如Post在你的情况下),我也不会抛出 GraphQL,除非它是一个真正的系统错误 - 如果它是用户输入的结果或者是其他预期的情况,我会将其建模为返回类型。

返回包装有效负载通常被认为是最佳实践,因为 a) 您的突变应该返回入口点一切b) 它使您能够轻松地在以后向返回类型添加新字段。

请记住,突变本质上是一个函数,它接受一些输入数据和当前图,并返回一个新图。从类似 REST 的 CRUD 操作的角度来思考通常是错误的。

type CreatePostError = {
    // Whatever you want
}

type CreatePostSuccess = {
    post: Post!
    warning: String
}

union CreatePostPayload = CreatePostSuccess | CreatePostError

mutation {
    // Other mutations
    createPost(/* args /*): CreatePostPayload
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GraphQL:成功突变后如何发出警告? 的相关文章

  • Graphql @include 带表达式

    我正在实现一个查询 该查询应该根据用户登录状态提供响应中的某些字段 具体来说 我想得到 点率 仅当字段 authenticationToken已通过并且希望避免通过 authenticated在下面的查询中 我想避免发送的原因 authen
  • 如何将项目添加到列表中?

    我想添加一个字符串单词listOfVideosRated 列在我的用户表中 如果您可以发布您的架构 解析器映射模板 我可以提供更具体的建议 但我会尽力用您迄今为止发布的内容来回答这个问题 简单的方法 如果您已经拥有现有项目 则执行此操作的一
  • 如何集成Neo4j数据库、NestJS框架和GraphQL?

    我正在尝试将我的 REST API NestJS 与带有 GraphQL 查询的新 Neo4j 数据库集成 有人成功吗 提前致谢 编辑1 我添加了我的代码 import Resolver from nestjs graphql import
  • Apollo:数据/突变道具未传递给组件

    我有以下带有查询和突变的组件 但我的组件没有接收数据和突变道具 我的代码中是否做错或遗漏了什么 虽然查询确实被执行 但它只是没有被传递下去 this props mutate 以及 this props data 未定义 class Res
  • GraphQL 缺少名称

    刚刚使用 Node 和 C 学习 GraphQL 我正在尝试将 C 示例移植到 Node 因为这将是一个很好的学习练习 因为我不太了解 Node 或 graphql 我有两种类型 帐户和所有者 即帐户所有者 以下内容一切正常 即拥有帐户的字
  • 如何使用 HotChocolate 和 EFCore 创建 GraphQL 部分更新

    我正在尝试使用 Entity Framework Core 和 Hot Chocolate 创建 ASP NET Core 3 1 应用程序 应用程序需要支持通过 GraphQL 创建 查询 更新和删除对象 有些字段需要有值 创建 查询和删
  • GraphQL 请求错误 - 未知参数“slug”

    我正在尝试将我的 index js 页面链接到文章模板 以使用 slug 和显示来自中间件 Drupal 站点的数据createPages 我的 index js 页面和我的页面上的数据正确显示createPages将文件路径更改为后似乎没
  • React-Apollo Mutation 返回空响应

    I am using AWS Appsync where I want to get a response from a successfully executed mutation When I try my setup in the A
  • 有没有办法从应用程序脚本中的 graphql API 获取数据?

    我正在尝试通过应用程序脚本从 graphql API 获取数据 使用 POST 获取 graphql 数据有一个问题 提供从 GraphQL API 获取的查询字符串 https stackoverflow com questions 47
  • 如何为 hotchocolate 12 graphql 中的扩展字段设置虚拟过滤器处理程序?

    我有一个扩展属性需要可过滤 但是它从不同的数据源获取数据 这意味着默认过滤将不起作用 因为查询无法正确翻译 我想创建一个虚拟过滤器类型处理程序 然后根据查询上下文手动应用过滤器 public class User public string
  • 连接中的不透明游标应该在不同的字段参数中保持稳定吗?

    The RANGE ADD突变需要一个edgeName以便它可以将新边插入到客户端连接中 作为其查询的一部分 它还包括cursor 问题是服务器无法知道客户端在生成边缘响应时可能将哪些参数应用于连接 这是否意味着cursor应该稳定 通常
  • GraphQLError:必须提供查询根类型

    我使用 NestJS TypeORM 和 GraphQL 作为我的后端 API 我收到以下错误 GraphQLError Object Query root type must be provided at SchemaValidation
  • GraphQL 突变操作顺序

    我正在创建一个有效的突变 但我不确定它是否按照我认为的方式工作 不过我想知道执行顺序是什么 Async 从上到下同步 同步随机顺序 其他的东西 我想确保在执行插入 更新插入之前从表中删除某些项目 使用以下突变查询字符串 这是否总是会执行我想
  • Graphql 字段在类型上不存在

    浏览完 Graphql 的文档后 我开始在一个玩具 Rails reactJS 项目上实现它 这些项目允许用户通过设备登录 然后访问显示艺术家列表的虚拟 艺术家路径 一切似乎都工作正常 直到我尝试使用 React 应用程序中的 GraphQ
  • 为什么 Apollo Server 不是 Express 的中间件,而是接受 Express 作为中间件的服务器?

    我只是想知道这种看似尴尬的配置的原因是什么 来自Apollo 服务器入门 https www apollographql com docs apollo server getting started html const server ne
  • React 未捕获的不变违规:在 ApolloConsumer 的上下文中找不到“客户端”。将根组件包装在

    我有一个使用 React 应用程序react apollo 2 5 8以及我通过 NPM 安装并在应用程序中使用的自定义组件库 图书馆有react apollo 2 5 8列在对等和开发依赖项中 自从我将 React apollo 升级到
  • 调用 DynamoDB 中的用户数据时渲染得太晚

    所以我试图从dynamoDB 我正在使用一个GraphQL API访问我的数据库 在提供的代码的注释部分中 我提到我已经尝试过users 1 friends map 它确实返回正确的朋友列表数组 但用户似乎直到朋友列表渲染后才被设置 我应该
  • graphql 中的 Console.log 解析器数据

    我正在尝试在 graphql 应用程序中 console log 解析器 graphiql 部分可以工作 我可以启动服务器并查看 graphql 仪表板 然后使用根查询在浏览器窗格中检索结果 但我无法在浏览器控制台中 console log
  • 使用 buildSchema 时如何访问字段解析器内父解析器的值?

    当我们使用 graphqlHTTP 时 传递给解析方法的第一个参数实际上是客户端查询传递的参数 而不是 root 这对于查询解析器来说很好 但是对于字段解析器需要知道父级值的用例 如何实现这一点 type Person name Strin
  • 如何在Union中查询不同类型的同一字段?

    我有以下型号 type Duck category Baz type Foo size FooSize type Bar size BarSize union Baz Foo Bar 以下查询会引发错误Validation error of

随机推荐

  • Rails:文件路径

    我里面有app一个名为csv在这个目录中我有一个名为names csv我想用File read path string 函数来读取文件 文件的相对路径是什么 file File join Rails root app csv names c
  • 将当前时间添加到日期时间?

    我有一个代表日期的字符串 它从 DropDownList 中返回 该字符串是 2010 年 8 月 27 日 例如 现在我想将当前时间添加到此并将其解析为 Datetime 所以最终它应该是一个 DateTime 类似2010年8月27日
  • 如何使用 ts.transform 将附加语句注入到函数中

    我使用 Typescript 编译器 API ts transform ts updateFunctionDeclaration 在现有源文件中的函数开头注入附加语句 这非常有效 除了当我打印转换后的代码 使用 ts Printer 时 原
  • Dart - 将纪元以来的毫秒数(UNIX 时间戳)转换为人类可读的时间

    有没有一种好方法可以将纪元 例如 1486252500000 13 位 以来的毫秒数格式化为人类可读的格式 DateTime自纪元以来确实有一个毫秒的命名构造函数 https api dartlang org stable 1 24 2 d
  • 命名方法规则简单,兼容ARC命名约定

    我很难理解 ARC 的命名约定 我一直使用 ARC 进行编码 我想这就是原因 1 类方法 我应该为以下方法选择什么名称 这两个名称在内存管理方面有什么区别 这个名字 MyObject newObjectFrom MyObject anObj
  • 将 python 脚本的输出获取到 Jenkinsfile 中的变量中

    我有一个 Python 脚本 它在标准输出上返回一个字符串 python 脚本返回的值可以收集在 bash 脚本中 如下所示 bin bash outputString my python script py some parameter
  • 函数式编程和依赖倒置:如何抽象存储?

    我正在尝试创建一个具有较低级别库的解决方案 该库将知道在调用某些命令时需要保存和加载数据 但保存和加载函数的实现将在特定于平台的项目中提供它引用较低层的库 我有一些模型 例如 type User UserID UserID Situatio
  • 如何使用boost-spirit将结果放入STL图?

    include
  • Eclipse 在 src/main/resources 中添加了 ** 排除模式:如何读取资源文件?

    我使用 Eclipse Oxygen 2 Release 4 7 2 和标准 src main resources 文件夹创建了一个简单的 Maven 项目 并将其添加到类路径中 问题是 Eclipse 添加了一个排除模式 到 src ma
  • 播放 .wav 文件

    我正在使用 Visual Studio 2010 Express 我正在尝试编写一个简单的程序 该程序将重复波形文件 5 次 我正在运行 Windows XP SP3 据我所知 这是 include stdafx h include
  • Meteor:自定义允许和拒绝规则的错误消息

    我正在寻求标准化 Meteor 中允许和拒绝规则的错误消息 我不想在客户端的回调中定义错误 而是希望服务器以正确的错误消息进行响应 这样我只需定义它们一次 来自允许 拒绝的文档 如果函数认为应该允许该操作 则它们应该返回 true 否则它们
  • Solr 搜索字段中的值数组

    我是 Solr 搜索的新手 任何人都可以帮助我解决我的问题 我有值数组 我想将其添加到 solr 查询中 例如 query gt setQuery field 1 2 5 当我执行此操作时 我收到此错误消息 org apache solr
  • 使用文本和值填充 DropDownList

    我在 ASP NET Webforms 中有一个下拉列表 我想计算某一年是多少年前 在第一行中 2002 是当前年份 9 并且必须是值 而 9 是 visibel 文本 显示 2002 年是多少年前 2002 9 2003 8 2004 7
  • 是否可以阻止 PWA 仅在特定路由上使用缓存?

    自从我将 React 应用程序配置为 PWA 以来 我开始遇到谷歌身份验证问题 当用户单击 使用 Google 登录 时 应该会访问此端点 route GET api users auth google desc Authenticate
  • 在颤振中我如何检查位置是否启用?

    当用户输入没有启用位置的谷歌地图页面时 我遇到问题 地图不会更新 所以我想检查用户是否事先启用了位置 所以我需要一个函数 如果启用了位置 则返回 true 如果没有启用 则返回 false use 权限处理插件 https pub dev
  • 如何在 Dart 中查找集合的所有子集?

    我需要获取数组的所有可能的子集 假设我有这个
  • 为什么我在 Google 地图 Android API 上收到签名无效的信息?

    我的应用程序在 5 1 版本的设备上可以正常进行位置更新 从那时起 我做了两件事 生成签名的 apk 尝试将其部署到 6 0 设备 我不知道发生了什么 但现在 google api 即使在我原来的设备上也无法工作 这是错误日志的一部分 我认
  • 自定义 UISlider

    如何自定义UISlider 更改样式 背景 你可以通过this http www raywenderlich com 4344 user interface customization in ios 5自定义控件的教程 要自定义 UISli
  • 触发一次后关闭事件监听器

    我有一个脚本可以触发一个提供免费下载的弹出框 当用户的鼠标离开页面时它会触发 显然不适用于移动设备 我已经有一个可行的解决方案 在我的脚本中 我设置了一个 cookie 来停用脚本 30 分钟 并且该部分有效 如果我刷新页面 弹出窗口不会再
  • GraphQL:成功突变后如何发出警告?

    让我们想象一下我有一个createPost插入新帖子的突变 在典型的应用程序中 该突变可以 成功 返回一个Post 失败 抛出错误 我使用阿波罗错误 https github com thebigredgeek apollo errors来