微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为更新 GraphQL Apollo 中的表制作正确的模式和解析器

如何解决为更新 GraphQL Apollo 中的表制作正确的模式和解析器

我正在尝试更新 Postgres 数据库的两个字段:

const update_din_times_for_rep = gql`
  mutation update_din_times_for_rep(
    $id: Int!
    $name: String
    $val: String
  ) {
    update_din_times_for_rep(id: $id,name: $name,val: $val) {
      id
    }
  }
`;

下一步:

const [data_din_times_for_rep,{ loading:loadingMutation,error:errorMutation }] = useMutation(update_din_times_for_rep);

和处理程序:

let handlerMutation = () => {
    data_din_times_for_rep({ variables: { id } });
  }
<Button onClick={handlerMutation}>Test!</Button>

似乎是resolvers.js中的错误,但是试了很多,没有结果:

update_din_times_for_rep: (parent,args) => {
           const mytmp = {
            id: args.id,name: args.name,val: args.val,}
            return Time_windows
        }

如何使解析器尽可能简单?现在唯一的解析器部分对我来说很困难,请问有什么建议吗?解析器是别人写的,我需要根据我的情况修改它。

更新。 如何更改resolver.js 以便将数据写入数据库?我做了一个修改

update_din_times_for_rep: (parent,}
            return Time_windows
        }

但我不明白接下来要做什么,我试着按照网上的几个例子进行操作。他们中的大多数只处理数组或对象,或磁盘上的平面 db 文件。没有示例清楚地显示处理真实 postgres 数据库的突变的方式,如 react->resolver-schema-tables-update db。

就我而言,我做了正确的反应->模式表。但不是解析器部分。我的模式在类型 Query 和类型 Mutation 部分中声明为查询和突变:

type Time_windows {
        id: Bigint
        name: String
        val: String
    }

解决方法

经过多次尝试,我找到了一个最小的工作代码:

update_din_times_for_rep: async (parent,args) => {
            const mytmp = { id: args.id,name: args.name,val: args.val,}
           await client.query(`insert into din_times_for_rep (id,val) values ('${mytmp.id}','${mytmp.name}')`);
        }

如果有人添加评论或改进就好了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。