Из того, что я видел онлайн, все здесь должно работать, в практическом плане я получаю 400 плохих запросов от клиента и 500 (неправильный порядок) от почтальона
// app.module.ts
GraphQLModule.forRoot({
cors: true,
playground: true,
debug: true,
autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
// installSubscriptionHandlers: true,
uploads: true,
context: ({ req, res }) => ({
req,
res,
}),
// File upload mutation in random resolver
@Mutation(() => ResponseMessage)
async uploadSigleFile(
@Args({ type: () => GraphQLUpload, name: 'upload', nullable: true })
upload: FileUpload,
) {
console.log(upload.filename, upload.mimetype);
return new ResponseMessage({ response: 'ciao' });
}
Ссылка Graphql, где я включил составные данные (фактически запрос корректно отображается как составные)
const uri = `${environment.serverUrl}/graphql`; // <-- add the URL of the GraphQL server here
export function createApollo(httpLink: HttpLink): ApolloClientOptions<any> {
return {
link: httpLink.create({ uri, useMultipart: true }),
cache: new InMemoryCache()
};
}
@NgModule({
exports: [ApolloModule, HttpLinkModule],
providers: [
{
provide: APOLLO_OPTIONS,
useFactory: createApollo,
deps: [HttpLink]
}
]
})
export class GraphQLModule {}
Мутация Graphql, которая генерирует angular сервис
mutation Super($upload: Upload) {
uploadSigleFile(upload: $upload) {
response
}
}
Где вызывается мутация (да, я проверил и файлы на самом деле приходят к мутации)
onFileChange(e: HTMLInputEvent) {
const myFile = e.target.files[0];
this.apolloQuery(myFile);
}
apolloQuery(upload: File) {
this.superGql
.mutate({
upload
})
.subscribe(({ errors, context, data, extensions }) => {
});
}
Это сводит меня с ума, я буду вечно благодарен тому, кто поможет, я пробовал любую возможную комбинацию, я не знаю, что мне не хватает (например: скаляр нестандартного гнезда или импорт его в поле распознавателей с использованием apollo-client-upload в клиенте)