如何在NodeJS中使用GraphQL和Apollo Upload Server上传文件?

时间:2018-08-24 12:54:47

标签: node.js graphql apollo-server

我没有通过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);
  }
}
);

现在,我想以相同的形式添加上传文件功能。请帮我怎么做。

谢谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我确定您会在apollo-universal-starter-kit项目中找到所有需要的部分(客户端+服务器)。