postgresql - 为什么我使用 graphql > hasura > postgres 保存日期时出错
问题描述
我使用 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'}
解决方案
因此,如果不查看您的 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
推荐阅读
- c# - 证书扩展值包含 2 个额外字节 (\u0004\u0002) 八位字节编码
- google-dfp - 如何使用订单项 ID 在 Google Ad Manager (DFP) 中刷新广告
- vb.net - 尝试在控制台应用程序 VB.NET 中播放声音
- javascript - 在 React Saga 单元测试中需要帮助
- sql-server - SQL Server 地理:减小 WKT 文本的大小(小数精度)
- c++ - 从 cmake 生成的命令中取消设置 cppcheck 分析中的定义
- javascript - 使用 JavaScript 访问 localStorage 的问题
- python - 在python中从带有硒的列表中选择一个标签
- python - 格式化字符串中的自定义参数
- jenkins - 如何在詹金斯的多配置项目中为组合添加单独的参数