首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中继/路由器登录突变?

中继/路由器登录突变?
EN

Stack Overflow用户
提问于 2016-05-13 01:42:07
回答 1查看 489关注 0票数 6

我正在尝试实现一个用于登录的变异。突变验证所提供的id_token,并通过会话使用户登录。变异本身是有效的(用GraphiQL验证),但我在将它与中继集成时遇到了问题。

当用户登录时,整个中继存储可能会被更改,因为"viewer“是根查询。但是我不想在fat查询中列出我的整个查询树。如果能以某种方式清空整个商店就好了,但我看不到使用react-router-relay可以做到这一点。

中继变异:

代码语言:javascript
复制
export default class LoginMutation extends Relay.Mutation {
  getMutation() {
    return Relay.QL`mutation {login}`;
  }

  getVariables() {
    return {
      id_token: this.props.id_token
    };
  }

  getFatQuery() {
    // TODO: list everything?
    return Relay.QL`
      fragment on LoginPayload {
        viewer
      }
    `;
  }

  getConfigs() {
    return []; // TODO: not sure what to return...
  }
}

用法:

代码语言:javascript
复制
Relay.Store.commitUpdate(new LoginMutation({id_token}), {
        onSuccess: (resp) => {
          history.push('/');
        }
      });

GraphQL架构:

代码语言:javascript
复制
input LoginInput {
  id_token: String!
  clientMutationId: String!
}

type LoginPayload {
  viewer: Viewer
  clientMutationId: String!
}

type Mutation {
  login(input: LoginInput!): LoginPayload
}

interface Node {
  id: ID!
}

type Query {
  viewer: Viewer
  node(id: ID!): Node
}

type Viewer implements Node {
  id: ID!
  user: User
  ships: [Ship]
  ship(id: ID!): Ship
}

schema {
  query: Query
  mutation: Mutation
}
EN

回答 1

Stack Overflow用户

发布于 2017-01-27 23:44:38

fatQuery中,当您列出non-scalar字段时,中继将假定任何连接的字段都可能已更新。在某些需要参数的字段中(例如,(first: n)),您可以使用@relay(pattern: true)来绕过此要求。This SO question讨论了这个特性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37193982

复制
相关文章

相似问题

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