Какова правильная реализация для получения файловых загрузок от клиента на сервере, используя следующую комбинацию пакетов / методов (и их соответствующие зависимости не перечислены):
graphql-upload
apollo-server-fastify
@nestjs/platform-fastify
(первый подход к коду)
В идеале мы пытаемся реализовать следующее (из загрузка файлов с сервера apollo ) используя метод NestJS GraphQL Code First (за исключением нескольких файлов вместо одного)
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
type File {
filename: String!
mimetype: String!
encoding: String!
}
type Query {
uploads: [File]
}
type Mutation {
singleUpload(file: Upload!): File!
}
`;
const resolvers = {
Query: {
uploads: (parent, args) => {},
},
Mutation: {
singleUpload: (parent, args) => {
return args.file.then(file => {
//Contents of Upload scalar: https://github.com/jaydenseric/graphql-upload#class-graphqlupload
//file.stream is a node stream that contains the contents of the uploaded file
//node stream api: https://nodejs.org/api/stream.html
return file;
});
},
},
};
const server = new ApolloServer({
typeDefs,
resolvers,
});
server.listen().then(({ url }) => {
console.log(`? Server ready at ${url}`);
});
Прямо сейчас мой клиент правильно отправляет файлы на мой сервер, используя следующую мутацию:
gql`
mutation uploadObjects($files: [Upload!]!) {
uploadObjects(files: $files) {
bucketKey
}
}
`;
Здесь приведены ссылки на изображения запроса, отправляемого с двоичными файлами, как и ожидалось: