angular - 将文件从Angular 7 Web App上载到Apollo 2.0 GraphQL Server

标签 angular graphql apollo-client graphql-js apollo-server

我正在尝试使用Angular Apollo作为客户端和Apollo 2.0作为服务器上载文件。

相信我,我尝试了所有教程,可以在Internet上找到但没有帮助的示例。有一个名为apollo-upload-file的库,他们提供了一个示例来实现它,但是在客户端,他们使用了React。尽管我尝试实现他的示例,但没有任何效果。

请帮忙。

最佳答案

服务器

在您的模式中,您需要将文件参数定义为类型Upload,这是Apollo提供的内置类型

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

const TypeDef = gql `
  type Mutation {
    upload(file: Upload!)
  }
`


如果您收到关于类型上传不是类型的错误,也可以在您的模式中定义它(我有这个问题)
const { gql } = require('apollo-server');

const TypeDef = gql `
  scalar Upload

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


在您的左轮手枪中,您可以在args中访问文件。
const resolver = {
        Mutation: {
            async upload(obj, args, context, info) {
                const file = await args.file;
                // ... DO STUFF
            },
        }
}

客户

在客户端中,您需要使用apollo-angular-link-http包来帮助文件上传。
在请求的context中使用需要设置useMultipart : true
查询将类似于此
const uploadFileMutation = gql`
  mutation UploadMutation(
    $file: Upload!
  ) {
    upload(file: $file) {
        YOUR RESPONSE
      }
    }
  }
`

Apollo请求将类似于此

  constructor(
    private Apollo: Apollo
  ) { }

  fileUpload(file){
    this.Apollo.mutate<any>({
      mutation: uploadFileMutation,
      variables: {
        file: this.file
      },
      context: {
         useMultipart: true
      }
    }).subscribe(({ data }) => {
       this.response = data.upload
    });
   }


我希望这可以帮助或至少使您走上正确的道路。

关于angular - 将文件从Angular 7 Web App上载到Apollo 2.0 GraphQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841476/

相关文章:

http - Angular2 路由和拦截调用(HTTP API 中的某些地方从版本 2.1.0 更改为版本 2.2.3。)

android - Apollo GraphQL - 是否可以执行请求不同字段的相同查询?

javascript - 创建后更新 Apollo 客户端身份验证链接

angular - 等待两个 observables 在 Angular auth guard 中按顺序完成

css - Angular 2轮播不显示

javascript - Angular 2 如何与 jquery 一起使用?

graphql - Apollo GraphQL 服务器 : filter (or sort) by a field that is resolved separately

javascript - Apollo GraphQL,有没有办法在查询期间操纵正在写入缓存的数据?

react-native - 如何将 Props 从 Redux Store 传递到 Apollo GraphQL 查询

graphql - Apollo GraphQL (React) 跨组件数据共享