Миграция express-graphql на apollo-server v2

Я пытаюсь переключить express-graphql на apollo-server v2, но мне сложно переносить пакеты, особенно с паспортными и сессиями.

Моя текущая настройка с помощью express-graphql:

const schema = include('schema')

const app = express()

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.use(session({
  secret: process.env.SESSION_SECRET,
  name: 'sessionId',
  resave: false,
  saveUninitialized: false,
  store: new MongoStore({ mongooseConnection: mongoose.connection }),
}))

app.use(passport.initialize())
app.use(passport.session())

app.use('/graphql', expressGraphQL({ schema }))

const server = http.createServer(app)

server.listen(8000, '0.0.0.0', () =>
  console.info('Server running on port 8000')
)

А теперь с apollo-server-express @ rc:

const schema = include('schema')

const app = express()

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.use(session({
  secret: process.env.SESSION_SECRET,
  name: 'sessionId',
  resave: false,
  saveUninitialized: false,
  store: new MongoStore({ mongooseConnection: mongoose.connection }),
}))

app.use(passport.initialize())
app.use(passport.session())

const apollo = new ApolloServer({
  schema,
  context: ({ req: { user, session } }) => ({ user, session })
})
apollo.applyMiddleware({ app, path: '/graphql' })

server.listen(8000, '0.0.0.0', () =>
  console.info('Server running on port 8000')
)

Благодаря этому я получаю объекты user и session в контексте и работает, как и раньше, но когда я пытаюсь связаться с пользователями login() или logout() через context, появляется сообщение login is not a function.

Хорошо, в контексте context: ({ req: { user, session, login, logout } }) => ({ user, session, login, logout }) и попробуйте еще раз, но теперь я получаю Passport is not initialized

Раньше мне не приходилось устанавливать контекст с помощью express-graphql, поэтому я застрял на этом. Пожалуйста помоги?

У меня была аналогичная проблема, но с использованием Hapi. Вы смотрели Тест в Apollo-Server branch 2? github.com/apollographql/apollo-server/blob/version-2/packag‌ es /…

tlbignerd 05.07.2018 19:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
1
1
687
0

Другие вопросы по теме