如何在Keystone6中使用graphQL更新突变上传图像?

问题描述 投票:0回答:1

我正在尝试使用

useMutation
上传用户个人资料图片 但我在上传时遇到
400
错误。

这是我的代码。

文件输入

<input type="file" multiple required onChange={onChange} />

onChange

 function onChange({ target: { validity, files } }: any) {
        if (validity.valid) {
            try {
                updateUserImage({
                    variables: { files: { upload: files[0] } },
                });
            } catch (error) {
                console.log(error);
            }
        }
    }

更新用户图像

const [updateUserImage] = useMutation(updateProfileImageQuery);

const updateProfileImageQuery = gql`
    mutation ($files: Upload!) {
        updateUser(
            data: { avatar: $files }
            where: { id: "ckx8qymsv0046iol87cszngcn" }
        ) {
            name
        }
    }
`;
graphql apollo-client keystonejs keystonejs6
1个回答
0
投票

我已经使用本机提取完成了发送 graphQL 突变的工作:

export const useGqlFile = async () => {
  const formData = new FormData();
  const query = `
    mutation ($data: InputType!) {
      item: createModel(data: $data) {
        id
        file {
          filename
          url
        }
      }
    }
  `;

  formData.append(
    "operations",
    JSON.stringify({
      variables: {
        data,
      },
      query,
    }),
  );

  formData.append("map", '{"1":["variables.data.file.upload"]}');
  formData.append("1", file, file?.name);


  const response = await fetch(
    `${runtimeConfig.public.BACKEND_URL}/api/graphql`,
    {
      method: "POST",
      body: formData,
      headers: {
        authorization,
      },
    },
  );

  return response;
};
© www.soinside.com 2019 - 2024. All rights reserved.