为在 GraphQL Apollo 中更新 table 创建正确的模式和解析器

Make properly schema and resolver for update a table in 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, args) => {
           const mytmp = {
            id: args.id,
            name: args.name,
            val: args.val,
          }
            return Time_windows
        }

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

在我的例子中,我做了正确的 react->schema-tables。但不是解析器部分。我的模式在类型查询和类型突变部分中声明为查询和突变:

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]);
        }

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