graphql upload express
//resolvers.js
export default {
Query: {
usersActivation() {
return 'Hello Wordl'
}
},
Mutation: {
uploadFile: async (parent, { file }) => {
const { filename, createReadStream } = await file.promise
fileUpload({ filename, stream: createReadStream() })
return true
}
}
}
//typedefs.js
export default gql(`
scalar Upload
type Query {
helloWordl : String!
}
type Mutation {
uploadFile(file: Upload!): Boolean
}
`)
// util.upload.js
const uploadFile = ({ filename, stream }) => {
stream
.pipe(createWriteStream(resolve(process.cwd(), `src/images/${filename}`)))
.on('finish', () => Promise.resolve())
.on('error', Promise.reject)
}
const validateFile = ({ filename, stream }) => {
const extFile = filename.replace('.', '')
const extPattern = /(jpg|jpeg|png|gif|svg)/gi.test(extFile)
if (!extPattern) throw new TypeError('Image format is not valid')
const fileExits = existsSync(resolve(process.cwd(), `src/images/${filename}`))
if (!fileExits) return uploadFile({ filename, stream })
unlink(resolve(process.cwd(), `src/images/${filename}`), (error) => {
if (error) throw error
return uploadFile({ filename, stream })
})
}
export const fileUpload = ({ filename, stream }) =>
filename ? validateFile({ filename, stream }) : new Error('Image is required')
// request query playground
mutation UPLOAD_FILE($file: Upload!) {
uploadFile(file: $file)
}
Are there any code examples left?
New code examples in category Javascript
-
Javascript 2023-04-21 22:52:36
-
Javascript 2022-03-27 22:25:20 javascript download string as file
-
Javascript 2022-03-27 21:40:22 sort numbers in array javascript
-
Javascript 2022-03-27 21:20:04 compare two arrays and return the difference javascript
-
Javascript 2022-03-27 21:15:02 javascript regex french phone number
-
Javascript 2022-03-27 21:05:03 cypress custom error message
-
Javascript 2022-03-27 21:00:05 create element javascript with id
-
Javascript 2022-03-27 20:40:57 feather icons react
-
Javascript 2022-03-27 20:20:01 how to make graphql request in axios
-
Javascript 2022-03-27 20:15:07 bootstrap validator password and confirm password