Skip to content

Commit 456afd3

Browse files
authored
Update part8e.md
1 parent dcf60cb commit 456afd3

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

src/content/8/en/part8e.md

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ Let us start by extracting the schema definition to file
142142
<i>schema.js</i>
143143

144144
```js
145-
const { gql } = require('apollo-server')
145+
const { gql } = require('@apollo/server')
146146

147147
const typeDefs = gql`
148148
type User {
@@ -198,7 +198,7 @@ module.exports = typeDefs
198198
The resolvers definition is moved to the file <i>resolvers.js</i>
199199

200200
```js
201-
const { UserInputError, AuthenticationError } = require('apollo-server')
201+
const { UserInputError, AuthenticationError } = require('@apollo/server')
202202
const jwt = require('jsonwebtoken')
203203
const Person = require('./models/person')
204204
const User = require('./models/user')
@@ -311,15 +311,18 @@ module.exports = resolvers
311311
Next we will replace Apollo Server with [Apollo Server Express](https://www.apollographql.com/docs/apollo-server/integrations/middleware/#apollo-server-express). Following libraries are installed
312312

313313
```
314-
npm install apollo-server-express apollo-server-core express @graphql-tools/schema
314+
npm install express cors body-parser @graphql-tools/schema
315315
```
316316
and the file <i>index.js</i> changes to:
317317

318318
```js
319-
const { ApolloServer } = require('apollo-server-express')
320-
const { ApolloServerPluginDrainHttpServer } = require('apollo-server-core')
319+
const { ApolloServer } = require('@apollo/server')
320+
const { expressMiddleware } = require('@apollo/server/express4')
321+
const { ApolloServerPluginDrainHttpServer } = require('@apollo/server/plugin/drainHttpServer')
321322
const { makeExecutableSchema } = require('@graphql-tools/schema')
322323
const express = require('express')
324+
const cors = require('cors')
325+
const bodyParser = require('body-parser')
323326
const http = require('http')
324327

325328
const jwt = require('jsonwebtoken')
@@ -367,14 +370,27 @@ const start = async () => {
367370
},
368371
plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
369372
})
373+
374+
app.use(
375+
'/',
376+
cors(),
377+
bodyParser.json(),
378+
expressMiddleware(server, {
379+
context: async ({ req }) => {
380+
const auth = req ? req.headers.authorization : null
381+
if (auth && auth.toLowerCase().startsWith('bearer ')) {
382+
const decodedToken = jwt.verify(auth.substring(7), JWT_SECRET)
383+
const currentUser = await User.findById(decodedToken.id).populate(
384+
'friends'
385+
)
386+
return { currentUser }
387+
}
388+
},
389+
}),
390+
);
370391

371392
await server.start()
372393

373-
server.applyMiddleware({
374-
app,
375-
path: '/',
376-
})
377-
378394
const PORT = 4000
379395

380396
httpServer.listen(PORT, () =>

0 commit comments

Comments
 (0)