7. FileUpload (in server)

김종민·2022년 4월 22일
0

fileUpload 순서

apollo server를 apollo-server-express로 바꿈.

Tip.
dirname 은 현재 폴더 경로
filename 은 실행중인 파일 경로.

https://www.apollographql.com/docs/apollo-server/data/file-uploads/

https://www.apollographql.com/docs/apollo-server/integrations/middleware/#apollo-server-express

항상항상 공식문서 참조할것!!!

npm i apollo-server-express
npm i express
npm i graphql-upload

1. apollo-server => apollo-server-express 로 change


require('dotenv').config()
import { ApolloServer } from 'apollo-server-express'
import { graphqlUploadExpress } from 'graphql-upload'
import schema from './schema'
import { getUser } from './users/users.util'
import express from 'express'

const PORT = process.env.PORT

const startServer = async () => {
  const server = new ApolloServer({
    schema,
    context: async ({ req }) => {
      return {
        loggedInUser: await getUser(req.headers.token),
      }
    },
  })

  await server.start()
  const app = express()
  app.use(graphqlUploadExpress())
  app.use('/static', express.static('uploads'))
  server.applyMiddleware({ app })
  await new Promise((func) => app.listen({ port: PORT }, func))
}

console.log(`🚀  Server ready at http://loaclhost:${PORT}`)
startServer()
  1. const server에 schema를 바로 담았는데, 공식문서에는
    resolvers, typeDefs로 나눠서 넣어라고 하긴 함.
    scala Upload type이 만들어지게 하기 위해서임.~

  2. const startServer 를 만들어서 다 집어넣고,
    마지막에 startServer() 실행시킴.

  3. const app = express() 로 server를 express로 바꾸고 app을 통해서 실행.

  4. app 에 grqphqlUploadExpress 실행.

  5. app.use('/static', express.static('uploads'))
    ==>file을 업로드하면 uploads 폴더에 저장되게 설정.
    ==> 주소는 loacalhost:4000/static/filename 으로 하겠다는 의미임.

  6. server에 applyMiddleWare를 통해 app.use들을 middleWare에 넣어줌.

  7. await new Promise ((func)=>app.listen({port:PORT}), func))
    ==>공식문서 내용 , 그냥 닥치고 따라할껏.

  8. 마지막으로 startServer() 실행.

profile
코딩하는초딩쌤

0개의 댓글