-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
41 lines (32 loc) · 1.24 KB
/
server.js
File metadata and controls
41 lines (32 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// server.js
const { ApolloServer } = require('@apollo/server');
const { expressMiddleware } = require('@apollo/server/express4');
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const { typeDefs, resolvers } = require("./schema/schema");
const connectDB = require("./config/db");
const { getUserFromToken } = require("./auth/auth");
require('dotenv').config();
const startServer = async () => {
const app = express();
await connectDB();
const server = new ApolloServer({ typeDefs, resolvers });
await server.start();
app.use('/graphql',
cors(),
bodyParser.json(),
expressMiddleware(server, {
context: async ({ req }) => {
const authHeader = req.headers.authorization || '';
const token = authHeader.startsWith('Bearer ') ? authHeader.split(' ')[1] : '';
const currentUser = token ? getUserFromToken({ headers: { authorization: `Bearer ${token}` } }) : null;
return { currentUser }; // <- now we have currentUser directly
}
})
);
app.listen(4000, () => {
console.log('🚀 Server ready at http://localhost:4000/graphql');
});
};
startServer();