我没有找到任何合适的例子来通过GraphQL、Apollo Server在NodeJS中上传文件。
我已经编写了一个可以成功发送消息的mutation。下面是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);
}
}
);
现在,我想在同一个mutation中添加上传文件的功能。请帮忙告诉我如何实现。
提前感谢。