【问题标题】:Send an enum to graphql API from react app从 react 应用程序向 graphql API 发送一个枚举
【发布时间】:2020-03-29 21:48:26
【问题描述】:

我有一个输入(附加图像),我需要从 react 应用程序发送到 graphql api。

我正在使用下面的代码将此对象和带有 init 的枚举发送到 graphql api Reactjs 代码

const RequestActionEnum = {
NEW: 'New',
UPDATE: 'Update',
ARCHIVE: 'Archive'
}

LocalCodeMutation({
      variables: {
        data: {
          id: null,
          city: values.jurisdiction,
          country: values.country,
          description: values.description,
          edition: values.edition,
          name: values.codeName,
          note: 'test',
          requestType: RequestActionEnum.NEW, // this is where i am sending enum value to api 
          state: values.state
        }
      }
    });

下面的代码是我调用突变的地方

 const [LocalCodeMutation] = useMutation(LOCALCODE_MUTATION, {
refetchQueries: () => [
  { query: GET_LOCALCODES },
],
});

export const LOCALCODE_MUTATION = gql`
  mutation LocalCodeMutation($data:  LocalCodeRequestParamsInput) {
localCodeMutation(data: $data) {
  ok
  errors
  localCodeInsertedId
  }
 }
`;

我在发送到 API 时收到此错误:

错误:GraphQL 错误:变量 $data 的值无效。

如何将枚举值从 react 组件发送到 graphQL api。

有人可以就此提出任何想法吗?

【问题讨论】:

  • 为什么对这个问题投反对票?这个问题有什么问题吗

标签: javascript reactjs graphql react-apollo apollo-client


【解决方案1】:

RequestActionEnum 的枚举值为

  • NEW
  • UPDATE
  • ARCHIVE

如果你使用这个枚举作为文字(不是变量),你可以这样写:

{
  someField(someArgument: NEW)
}

同样,如果您使用变量,您将使用"NEW"。相反,您使用的是"New",这对于这个特定的枚举来说不是一个有效的枚举值。

FWIW,如果你真的通读到错误的结尾,它也会告诉你很多。

【讨论】:

  • 感谢您的支持,我需要将“新”发送到 api 在这种情况下我需要做什么,请您指导我。谢谢
  • 我假设您指的是您从 GraphQL 解析器调用的其他 API?
  • 我从这里调用 .net 核心,并在其中使用带有突变的类型。除此之外我没有使用任何东西
  • 我需要将 api 中的字符串“New”与来自 react 应用程序的值进行比较,请告诉我如何实现这一点
  • 我不确定你在这里问什么。反应应用程序应该发送NEW 而不是New,因为那是您的架构中的内容。您可以更改您的架构,以便枚举值是 New,而不是如果您愿意(他们没有 have 全部大写)。或者您可以只转换您在解析器中收到的值。如何使用 GraphQL.net 完成需要是一个单独的问题。这与您看到的错误无关。
猜你喜欢
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2013-06-26
  • 2021-11-02
  • 2010-09-21
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多