微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将password-js正确集成到apollo-server?

如何解决如何将password-js正确集成到apollo-server?

我正在尝试将 account-js 与 apollo-server 集成。在我编写完所有代码后,我看到了所有自动生成的模式变更和查询。但是如果我想创建一个新用户createuser 解析器返回:

{
  "data": {
    "createuser": {
      "userId": null,"loginResult": null
    }
  }
}

它在 db 中创建一个用户,但不返回任何内容。我在db上看到了记录。我尝试使用该用户登录,但收到“消息”:“用户未设置密码”。我真的不明白问题出在哪里,因为我关注了 apollo 博客上的文章

链接https://www.apollographql.com/blog/email-password-authentication-with-accounts-js-and-apollo-server/

我还想用字符串 id 代替对象 ID 创建用户。 Accounts-js 文档说我应该传递“convertUserIdToMongoObjectId: false”选项。我做到了,但它也不起作用。我真的卡住了。

这是我的设置:


const accountsJsInıtializer = ({ mongoConnection }) => {
  const accountsPassword = new AccountsPassword()

  const accountsMongo = new Mongo(mongoConnection,{
    convertUserIdToMongoObjectId: false,dateProvider: (date) => date ? date.toISOString() : new Date().toISOString()
  })

  const accountsServer = new AccountsServer(
    {
      db: accountsMongo,tokenSecret: 'secret-token',},{
      password: accountsPassword
    }
  )

  return AccountsModule.forRoot({ accountsServer })
}


const apolloLoader = ({ expressApp,mongoConnection }) => {
  const accountsGraphQL = accountsJsInıtializer({ mongoConnection })

  const schema = makeExecutableSchema({
    typeDefs: mergeTypeDefs([typeDefs,accountsGraphQL.typeDefs]),resolvers: mergeResolvers([accountsGraphQL.resolvers,resolvers]),schemaDirectives: {
      ...accountsGraphQL.schemaDirectives
    }
  })

  const schemaMiddleware = applyMiddleware(schema)

  const apollo = new ApolloServer({
    schema: schemaMiddleware,context: accountsGraphQL.context,})

  apollo.applyMiddleware({ app: expressApp,path: '/graphql' })

  return apollo
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。