GraphQL error: Default value for $completedAt doesn't match type DateTime in React Apollo?

GraphQL error: Default value for $completedAt doesn't match type DateTime in React Apollo?

我有这样的突变 -

import gql from "graphql-tag";

const completedAt = new Date().toISOString();

export const CREATE_TODO = gql`
  mutation($body: String!, $completedAt: DateTime = completedAt) {
    createTodo(input: { body: $body, completed_at: $completedAt }) {
      id
      body
    }
  }
`;

当我调用这个突变时我得到了错误

GraphQL error: Default value for $completedAt doesn't match type DateTime in React Apollo

我该如何解决这个问题?我也试过 JSON.stringify(new Date().toISOString()) 但没有运气:(

此外,请注意这是可行的 -

import gql from "graphql-tag";

const completedAt = JSON.stringify(new Date().toISOString());

export const CREATE_TODO = gql`
  mutation($body: String!) {
    createTodo(input: { body: $body, completed_at: ${completedAt} }) {
      id
      body
    }
  }
`;

我改变了我的解决方案。现在,我所做的是不使用 completedAt 那样。我将其作为 GraphQL 变量的输入,例如:

import gql from "graphql-tag";

export const CREATE_TODO = gql`
  mutation createTodo($body: String!, $completedAt: DateTime) {
    createTodo(input: { body: $body, completed_at: $completedAt }) {
      id
      body
      completed_at
    }
  }
`;

然后,由于 $completedAt 不是 required 字段,我发送 null如果我不想要任何值,或者我发送 new Date().toISOString() 如果我希望它具有当前时间。

例如:

不完整的待办事项,即 DateTime 的空值

mutate({
    query: CREATE_TODO,
    variables: { body: "Incomplete todo", completedAt: null }
});

完成 Todo,即 DateTime 的当前时间

mutate({
    query: CREATE_TODO,
    variables: { body: "Complete todo", completedAt: new Date().toISOString() }
});