首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用graphql和apollo-server在解析器中获取会话

使用graphql和apollo-server在解析器中获取会话
EN

Stack Overflow用户
提问于 2019-12-02 22:35:07
回答 1查看 435关注 0票数 1

我是graphql的新手,我试图用会话文件创建一个身份验证系统。下面是我的代码:

代码语言:javascript
复制
const { ApolloServer, gql } = require('apollo-server-express')
const { buildFederatedSchema } = require("@apollo/federation")
const app = require('express')()
const session = require('express-session')
const FileStore = require('session-file-store')(session)

const typeDefs = gql`
type Query {
  testFunc: String
}
`

const resolvers = {
  Query: {
    testFunc: (_, args, context) => {
      console.log(context)
      const { session } = context
      console.log(session)
      session.something = "hello"
      return session.something
    }
  }
}

app.use(session({
  store: new FileStore({}),
  secret: 'secret'
}))

const server = new ApolloServer({
  schema: buildFederatedSchema([{
    typeDefs,
    resolvers,
    context: ({ req }) => ({ session: req.session })
  }])
})
server.applyMiddleware({app})

app.listen({ port: 4014 }, () =>
  console.log(`? Server ready at http://localhost:4014${server.graphqlPath}`)
)

这里的问题是我不能在testFunc解析器中获取会话。

Console.log(上下文)显示了以下内容:

代码语言:javascript
复制
{ _extensionStack:
   GraphQLExtensionStack {
     extensions:
      [ [EngineFederatedTracingExtension], [CacheControlExtension] ] } }

Console.log(会话)显示"undefined“

在graphql接口中,当我调用testFunc时,我显然“无法设置未定义的'something‘属性”。

我没有从阿波罗服务器v1迁移到v2,因为我是直接从v2开始的。我试着在graphql设置中将"request.credentials“设置为"input”,就像这篇文章中所说的:Apollo 2.0.0 Graphql cookie session,但它也没有改变任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 18:19:57

好的,我想出来了,我只需要替换这个:

代码语言:javascript
复制
const server = new ApolloServer({
  schema: buildFederatedSchema([{
    typeDefs,
    resolvers,
    context: ({ req }) => ({ session: req.session })
  }])
})

通过以下方式:

代码语言:javascript
复制
const server = new ApolloServer({
  schema: buildFederatedSchema([{
    typeDefs,
    resolvers
  }]),
  context: ({ req }) => ({ session: req.session })
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59141113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档