From 051d42406de0528915d7f570d6ec80f678ce878b Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Sat, 6 May 2023 11:04:26 +0200 Subject: [PATCH 1/2] Update guide code for GraphQL initialization --- guide/source/apollo.md | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/guide/source/apollo.md b/guide/source/apollo.md index 5bdbfde4c86..3364cf3a033 100644 --- a/guide/source/apollo.md +++ b/guide/source/apollo.md @@ -73,18 +73,37 @@ meteor add apollo On server you import `getUser` function and include it into the context option when setting up Apollo server: ```javascript -import { ApolloServer } from 'apollo-server-express'; +import { ApolloServer } from '@apollo/server'; +import { WebApp } from 'meteor/webapp'; import { getUser } from 'meteor/apollo'; import typeDefs from '/imports/apollo/schema.graphql'; import { resolvers } from '/server/resolvers'; +import express from 'express'; +import { expressMiddleware } from '@apollo/server/express4'; +import { json } from 'body-parser' + +const context = async ({ req }) => ({ + user: await getUser(req.headers.authorization) +}) const server = new ApolloServer({ + cache: 'bounded', typeDefs, resolvers, - context: async ({ req }) => ({ - user: await getUser(req.headers.authorization) - }) }); + +export async function startApolloServer() { + await server.start(); + + WebApp.connectHandlers.use( + '/graphql', // Configure the path as you want. + express() // Create new Express router. + .disable('etag') // We don't server GET requests, so there's no need for that. + .disable('x-powered-by') // A small safety measure. + .use(json()) // From `body-parser`. + .use(expressMiddleware(server, { context })), // From `@apollo/server/express4`. + ) +} ``` This will make user data available (if user is logged in) as the option in the query: From 9656bd0dbdf7ae97c332fa5e1cc93f1a9bba4f2c Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Sat, 6 May 2023 11:16:18 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Update=20Apollo=20skeleton=20NPM=20dependen?= =?UTF-8?q?cies=20=F0=9F=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/static-assets/skel-apollo/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/static-assets/skel-apollo/package.json b/tools/static-assets/skel-apollo/package.json index f0b3fcf2893..6295d82ae4a 100644 --- a/tools/static-assets/skel-apollo/package.json +++ b/tools/static-assets/skel-apollo/package.json @@ -8,10 +8,10 @@ "visualize": "meteor --production --extra-packages bundle-visualizer" }, "dependencies": { - "@apollo/client": "^3.7.5", - "@apollo/server": "^4.3.2", - "@babel/runtime": "^7.20.13", - "body-parser": "^1.20.1", + "@apollo/client": "^3.7.14", + "@apollo/server": "^4.7.1", + "@babel/runtime": "^7.21.5", + "body-parser": "^1.20.2", "express": "^4.18.2", "graphql": "^16.6.0", "meteor-node-stubs": "^1.2.5",