gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:06:40 26 4
gpt4 key购买 nike

我正在尝试使用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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com