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
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()
const server에 schema를 바로 담았는데, 공식문서에는
resolvers, typeDefs로 나눠서 넣어라고 하긴 함.
scala Upload type이 만들어지게 하기 위해서임.~
const startServer 를 만들어서 다 집어넣고,
마지막에 startServer() 실행시킴.
const app = express() 로 server를 express로 바꾸고 app을 통해서 실행.
app 에 grqphqlUploadExpress 실행.
app.use('/static', express.static('uploads'))
==>file을 업로드하면 uploads 폴더에 저장되게 설정.
==> 주소는 loacalhost:4000/static/filename 으로 하겠다는 의미임.
server에 applyMiddleWare를 통해 app.use들을 middleWare에 넣어줌.
await new Promise ((func)=>app.listen({port:PORT}), func))
==>공식문서 내용 , 그냥 닥치고 따라할껏.
마지막으로 startServer() 실행.