首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphQL错误:$completedAt的默认值与“反应阿波罗”中的DateTime类型不匹配?

GraphQL错误:$completedAt的默认值与“反应阿波罗”中的DateTime类型不匹配?
EN

Stack Overflow用户
提问于 2018-08-05 16:57:02
回答 1查看 890关注 0票数 0

我有这样的变异-

代码语言:javascript
复制
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错误:$completedAt的默认值与React中的DateTime类型不匹配

我该怎么解决这个问题?我也试过JSON.stringify(new Date().toISOString()),但没有运气。

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

代码语言:javascript
复制
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
    }
  }
`;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 07:29:11

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

代码语言:javascript
复制
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()

例如:

不完全Todo,即DateTime的空值

代码语言:javascript
复制
mutate({
    query: CREATE_TODO,
    variables: { body: "Incomplete todo", completedAt: null }
});

完成Todo,即DateTime的当前时间

代码语言:javascript
复制
mutate({
    query: CREATE_TODO,
    variables: { body: "Complete todo", completedAt: new Date().toISOString() }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51696420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档