簡體   English   中英

GraphQL錯誤:$ completedAt的默認值與React Apollo中的DateTime類型不匹配?

[英]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錯誤:$ completedAt的默認值與React Apollo中的DateTime類型不匹配

我該如何解決? 我也嘗試過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不是必填字段,因此如果我不需要任何值,則發送null;如果希望它具有當前時間,則發送new Date()。toISOString()

例如:

不完整的待辦事項,即DateTime的Null值

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

完成待辦事項,即DateTime的當前時間

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM