[英]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() 。
例如:
mutate({
query: CREATE_TODO,
variables: { body: "Incomplete todo", completedAt: null }
});
mutate({
query: CREATE_TODO,
variables: { body: "Complete todo", completedAt: new Date().toISOString() }
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.