为啥我使用 graphql > hasura > postgres 保存日期时出错
Posted
技术标签:
【中文标题】为啥我使用 graphql > hasura > postgres 保存日期时出错【英文标题】:Why I'm I getting an error saving date using graphql > hasura > postgres为什么我使用 graphql > hasura > postgres 保存日期时出错 【发布时间】:2020-08-07 10:46:57 【问题描述】:我使用 react、apollo、graphql、hasura、postgres 作为与数据库交互的堆栈。我认为我的问题很小,所以我只关注不起作用的部分,而不是发布整个代码。 谢谢。
Error: GraphQL error: unexpected variables in variableValues: birthday
at new ApolloError (bundle.esm.js:63)
at Object.next (bundle.esm.js:1004)
at notifySubscription (Observable.js:135)
at onNotify (Observable.js:179)
at SubscriptionObserver.next (Observable.js:235)
at bundle.esm.js:866
at Set.forEach (<anonymous>)
at Object.next (bundle.esm.js:866)
at notifySubscription (Observable.js:135)
at onNotify (Observable.js:179)
at SubscriptionObserver.next (Observable.js:235)
at bundle.esm.js:76
variables id: 2324324, name: "Fred", birthday: "1991-01-11"
如果我删除生日,则查询有效。
这里是函数
const onUpdateUser = (options) =>
updateUser(
variables: Object.assign( id: userId , options),
optimisticResponse:
__typename: "mutation_root",
update_users:
__typename: "users_mutation_response",
affected_rows: 1,
returning: [
__typename: "users",
id: userId,
...options,
,
],
,
,
);
;
输入birthday: '1991-01-11'
【问题讨论】:
请提供更多导致此错误的 javascript/Apollo 代码 - 这不是 Hasura 问题,因为根据 Postgres,“1991-01-11”是有效的日期格式(在 Heroku 实例中测试w/相同的架构)。 我添加了功能码。 谢谢,请提供updateUser对应的gql突变。似乎 Hasura 报告了该错误,进一步检查:github.com/hasura/graphql-engine/blob/master/server/src-lib/…,但这并不意味着它在上游是不可预防的。 【参考方案1】:因此,如果不查看您的 graphql 查询,我想您可能会认为它有点不对劲。
您不能将不存在的变量动态添加到 graphql 查询。该错误告诉您您正在尝试添加查询中不存在的变量
即这不起作用,因为您还没有定义生日。
mutation updateUser(
$userId: Int!
$birthday (UNDEFINED)
)
rest of query...
如果您需要添加动态数量的变量,您可以这样做。
反应代码
const onUpdateUser = (options) =>
updateUser(
variables:
userId,
userVariables: options
,
optimisticResponse:
__typename: "mutation_root",
update_users:
__typename: "users_mutation_response",
affected_rows: 1,
returning: [
__typename: "users",
id: userId,
...options,
,
],
,
,
);
;
GraphQL 突变
mutation updateUser(
$userId: Int!
$userVariables: user_set_input!
)
update_user(
where: id: _eq: $userId
_set: $userVariables
)
affected_rows
https://hasura.io/docs/1.0/graphql/manual/mutations/update.html
【讨论】:
嘿,谢谢。我已经能够弄清楚并超越这个:)以上是关于为啥我使用 graphql > hasura > postgres 保存日期时出错的主要内容,如果未能解决你的问题,请参考以下文章
无法使用我的突变在 Hasura / GraphQL 中插入数组关系
hasura graphql server 集成gatsby