首页 > 解决方案 > GraphQL 更新表条目

问题描述

我正在尝试使用 angular apollo 中的 gql-tags 更新表条目。我收到 400 错误,我不知道为什么。我遵循相同方法的删除方法似乎没有错误。我错过了一些明显的东西吗?

updateProject: {
            type: graphql.GraphQLString,
            args: {
                id: {
                    type: new graphql.GraphQLNonNull(graphql.GraphQLID)
                },
                companyId: {
                    type: new graphql.GraphQLNonNull(graphql.GraphQLString)
                },
                projectType: {
                    type: new graphql.GraphQLNonNull(graphql.GraphQLString)
                },
                description: {
                    type: new graphql.GraphQLNonNull(graphql.GraphQLString)
                }
            },
            resolve: (root, {
                id,
                companyId,
                projectType,
                description
            }) => {
                return new Promise((resolve, reject) => {
                    database.run('UPDATE projects SET companyId = (?), projectType = (?), description = (?) WHERE id = (?);', [companyId, projectType, description, id], (err) => {
                        if (err) {
                            reject(err);
                        }
                        resolve(`Project #${id} updated`);

                    });
                })
            }
        },

在我的角度项目中,我有 types.ts

export type Project = {
    id: number;
    companyId: string;
    projectType: string;
    description: string;
}

export type Query = {
    projects: Project[];
    project: Project;
}
export type Mutation = {
    deleteProject: Project;
    updateProject: Project;
}

然后在返回错误的我的角度项目中调用 mutate 方法。

onEdit(project: Project){
    
    console.log(project)
    this.apollo.mutate({
      mutation: gql
      `mutation($id: ID!, $companyID: String!, $projectType: String!, $description: String!){
        updateProject(id: $id, companyId: $companyId, projectType: $projectType, description: $description)
      }`,
      variables: {
        id: project.id,
        companyId: project.companyId,
        projectType: project.projectType,
        description: project.description
      },
      refetchQueries: [{query: gql`
        query {
              projects{
                id
                companyId
                projectType
                description
              }
            }
        `}]
       }).subscribe(res => {
         console.log(res.data);
      });

标签: angularsqlitegraphqlapollo

解决方案


推荐阅读