【问题标题】:GraphQL where clause to accept a Json object?GraphQL where 子句接受 Json 对象?
【发布时间】:2020-05-02 18:18:03
【问题描述】:

所以我有以下工作 GQL:

mutation updateManySomething{
    updateManySomething(
        data: {
            dateTime: "2020-01-15T13:07:42-06:00"
            status: true
            updatedBy: "1234"
        }
        where: { id_in: ["1234", "1234" ] }
    ) {
        count
    }
}

但是,当我尝试让它接受传递的变量时,它会因为没有 ID 而出错!定义是因为它是一个 ID 数组......

mutation updateManySomething(
    $id: ID!
    $dateTime: DateTime
    $status: Boolean
    $updatedBy: String!
    ) {
    updateManySomething(
    data: {
            dateTime: $dateTime
            status: $status
            updatedBy: $updatedBy
      }
  where: { id_in: [$id] }
    ) {
        count
    }
}

我已经尝试跳过 $id: ID!并创建一个新变量 $arrayOfIds: Json 但这也失败了,有人知道我能做什么吗?后端是 prisma JS 在 React-Native 中运行。

下图是来自 Apollo 的确切错误,一些轻微的变量名称发生了变化,但本质上是相同的查询。

【问题讨论】:

  • 发布有关错误的问题时,请确保发布完整的错误消息。这样可以更轻松地回答您的问题,并使有相同问题的其他人更容易找到您的问题。如果您使用的是 Apollo 客户端,则可以从您的 useMutation 钩子返回的 error 对象中解析服务器返回的错误。
  • 添加了错误的图片。

标签: graphql react-apollo prisma-graphql


【解决方案1】:

如果架构需要一个 ID 列表,那么您应该相应地定义您的变量:

mutation updateManySomething(
  $ids: [ID!]!
  $dateTime: DateTime
  $status: Boolean
  $updatedBy: String!
) {
  updateManySomething(
    data: {
      dateTime: $dateTime
      status: $status
      updatedBy: $updatedBy
    }
    where: {
      id_in: $ids
    }
  ) {
  count
  }
}

注意:非空类型可以用于预期可以为空的类型,反之则不行。这意味着您可以使用[ID!]!,即使参数的类型是[ID][ID!][ID]!

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2019-06-10
    相关资源
    最近更新 更多