【问题标题】:Inserting a queried default value in a single GraphQL mutation在单个 GraphQL 突变中插入查询的默认值
【发布时间】:2021-12-21 23:46:47
【问题描述】:

我是 GraphQL 的新手,使用 Hasura 连接到 Postgres DB 来公开一些 REST API。 我想知道是否有办法在单个 GraphQL 突变中插入查询值作为 默认值。

mutation insertCode($code: String = "", $workcenter: String = "", $order:String = QUERY) {
  insert_code_tracing(objects: {code: $code, order:   $order, workcenter: $workcenter}) {
    returning {
      time
    }
  }
}

QUERY 将是以下 GraphQL 查询:

query getActiveOrderByWrkcntr($workcenter: String = ""){
  orders(order_by: {time: desc_nulls_last}, where: {workcenter: {_eq: $workcenter}}, limit: 1) {
    order
    workcenter
    time
  }
}

在给定工作中心的情况下获取单个值。

是否可以指定查询的默认值而不是静态的?我想保持数据库的一致性,而不会冒着进行两次连续的 REST 调用来获取值然后将其传递给突变的风险。

【问题讨论】:

    标签: postgresql graphql introspection hasura graphiql


    【解决方案1】:

    每个用户/会话的默认值?很难将其命名为默认值。 graphQL 本身不支持。

    您可以尝试在某个缓存(redis?)中保存/记住它(查询值) - 一个在 userId 键下具有当前 workCenter 和 order 属性的对象。

    您可以使用用户 ID(来自上下文,来自身份验证中间件的 ID)在突变解析器中读取它(“默认”值)。

    如果没有 arg 传递(明确)并且缓存中存在有效(未过时)值,那么可以,使用它 - 否则会抛出一些缺少 arg 错误。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2020-01-03
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 2017-08-24
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多