Javascript Graphql upload getting";‘中的JSON无效;运营’;“多部分字段”;
我一直在努力弄清楚如何让文件上传在graphql中工作 这是我的基本实现Javascript Graphql upload getting";‘中的JSON无效;运营’;“多部分字段”;,javascript,graphql-js,apollo-server,Javascript,Graphql Js,Apollo Server,我一直在努力弄清楚如何让文件上传在graphql中工作 这是我的基本实现 // eslint-disable-next-line import/no-extraneous-dependencies const { ApolloServer, gql } = require('apollo-server-express') // eslint-disable-next-line import/no-extraneous-dependencies const express
// eslint-disable-next-line import/no-extraneous-dependencies
const { ApolloServer, gql } = require('apollo-server-express')
// eslint-disable-next-line import/no-extraneous-dependencies
const express = require('express')
const typeDefs = gql`
type File {
filename: String!
mimetype: String!
encoding: String!
}
type Query {
_ : Boolean
}
type Mutation {
singleUpload(file: Upload!): File!,
singleUploadStream(file: Upload!): File!
}
`;
const resolvers = {
Mutation: {
singleUpload: (parent, args) => {
return args.file.then(file => {
const {createReadStream, filename, mimetype} = file
const fileStream = createReadStream()
return file;
});
},
singleUploadStream: async (parent, args) => {
const file = await args.file
const {createReadStream, filename, mimetype} = file
const fileStream = createReadStream()
const uploadParams = {Bucket: 'apollo-file-upload-test', Key: filename, Body: fileStream};
console.log(result)
return file;
}
},
};
const server = new ApolloServer({ typeDefs, resolvers });
const app = express()
server.applyMiddleware({ app })
const port = Number(process.env.API_PORT || 4000)
app.listen({ port }, () => {
// eslint-disable-next-line no-console
console.debug(`There error message is exactly right, the JSON in the operations
field in the multipart request is invalid. Here is the JSON you are attempting to use:
{ "query": "mutation ($file: Upload!) { singleUploadStream
(file: $file) { filename } }”, "variables": { "file": null } }
//eslint禁用下一行导入/无无关依赖项
const{ApolloServer,gql}=require('apollo-server-express')
//eslint禁用下一行导入/无无关依赖项
const express=require('express')
常量typeDefs=gql`
类型文件{
文件名:字符串!
mimetype:String!
编码:字符串!
}
类型查询{
_:布尔值
}
类型突变{
singleUpload(文件:上传!):文件!,
singleUploadStream(文件:Upload!):文件!
}
`;
常量解析程序={
突变:{
singleUpload:(父对象,参数)=>{
返回args.file.then(文件=>{
const{createReadStream,filename,mimetype}=file
const fileStream=createReadStream()
返回文件;
});
},
singleUploadStream:async(父级,参数)=>{
const file=await args.file
const{createReadStream,filename,mimetype}=file
const fileStream=createReadStream()
const uploadParams={Bucket:'apollo file upload test',Key:filename,Body:fileStream};
console.log(结果)
返回文件;
}
},
};
const server=new ApolloServer({typeDefs,resolvers});
const app=express()
applyMiddleware({app})
const port=编号(process.env.API|u port | 4000)
app.listen({port},()=>{
//eslint禁用下一行无控制台
console.debug(`那里的错误消息完全正确,多部分请求中操作
字段中的JSON无效。以下是您尝试使用的JSON:
{“查询”:“变异($file:Upload!){singleUploadStream
(文件:$file){filename}},“变量”:{“file”:null}
首先,应使用JSON中的\n
避免或转义换行:
{“query”:“mutation($file:Upload!){singleUploadStream(file:$file){filename}}”,“variables”:{“file”:null}
其次,对于查询
值,您使用的是排版结尾引号字符“
而不是正确的双引号字符”
:
{“query”:“mutation($file:Upload!){singleUploadStream(file:$file){filename}}”,“variables”:{“file”:null}
@user3431327几个月过去了,你能接受答案或提供反馈吗。