Как загрузить файлы с помощью apollo-angular-graphql? - PullRequest
0 голосов
/ 04 мая 2018

Я ищу пакет, который можно использовать для загрузки файлов с помощью мутации graphql с использованием пакета apollo-angular. Кроме того, кто-нибудь может помочь мне понять, в каком формате файл будет загружен и извлечен на сервер и с сервера?

Спасибо за ваше время.

1 Ответ

0 голосов
/ 08 августа 2019

В вашей схеме сервера вам нужно определить аргумент файла как тип Upload. Это встроенный тип, предоставляемый Apollo. Однако, если вы получаете ошибки о типе Upload, просто добавьте его как пользовательский скалярный тип .

const { gql } = require('apollo-server');

const TypeDef = gql `

  scalar Upload

  type Mutation {
    upload(file: Upload!)
  }
`

В ваших револьверах вы можете получить доступ к файлу в ваших аргументах. Стоит отметить, что файл будет обещанием;

const resolver = {
        Mutation: {
            async upload(obj, args, context, info) {
                const file = await args.file;
                // ... DO STUFF
            },
        }
}

Пакет, который вы ищете для загрузки файлов: apollo-angular-link-http пакет . В контексте запроса вы должны установить для useMultipart значение true.

Таким образом, запрос на загрузку файла должен выглядеть примерно так.

// The Mutation Query Using Type of 'Upload' to represent the file 

const uploadFileMutation = gql`
  mutation UploadMutation($file: Upload!) {
    upload(file: $file) {
      YOUR RESPONSE
    }
  }
}

// The Apollo Client request 
// Context of 'useMultipart' needs to be set to true to enable file upload

this.Apollo.mutate<any>({
      mutation: uploadFileMutation,
      variables: {
         file: this.file
      },
      context: {
         useMultipart: true
      }
  }).subscribe(({ data }) => {
     this.response = data.upload
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...