我没有通过NodeJS中的Apollo Server通过GraphQL上传文件的适当示例。
我写了一个变体来发送完美运行的消息。这是代码sendMessage.js Mutation
const sendMessage = {
type: ChatType,
args: {
input: {
type: new GraphQLNonNull(new GraphQLInputObjectType({
name: 'ChatMessageInput',
fields: {
toUserId:{
name:'To User ID',
type: new GraphQLNonNull(GraphQLID)
},
message:{
name:'Message',
type: new GraphQLNonNull(GraphQLString)
}
}
}))
},
file:{
name: "File",
type: uploadType
}
},
async resolve(_, input, context) {
}
};
module.exports = sendMessage;
这是我编写的用于创建GraphQl端点的代码。
app.use('/api', bodyParser.json(), jwtCheck,
apolloUploadExpress({ uploadDir: "./uploads",maxFileSize: 10000000, maxFiles: 10 }),
graphqlExpress(req => ({
schema,
context: {
user: req.user,
header:req.headers
},
formatError: error => ({
status:error.message[0].status,
message: error.message[0].message,
state: error.message
})
})),function (err, req, res, next) {
if (err.name === 'UnauthorizedError') { // Send the error rather than to show it on the console
//console.log(err);
res.status(401).send({errors:[err]});
}
else {
next(err);
}
}
);
现在,我想以相同的形式添加上传文件功能。请帮我怎么做。
谢谢。
答案 0 :(得分:2)
这是客户端/服务器演示:https://github.com/mrdulin/react-apollo-graphql
这是服务器演示:https://github.com/mrdulin/apollo-server-express-starter/tree/master/src/fileupload
答案 1 :(得分:1)
我确定您会在apollo-universal-starter-kit项目中找到所有需要的部分(客户端+服务器)。