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() }
});
我有这样的突变 -
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() }
});