中继/路由器登录突变?

Posted

技术标签:

【中文标题】中继/路由器登录突变?【英文标题】:Relay/router login mutation? 【发布时间】:2016-09-08 16:55:16 【问题描述】:

我正在尝试实现登录突变。突变验证提供的 id_token 并通过会话登录用户。突变本身有效(通过 GraphiQL 验证),但我在将其与 Relay 集成时遇到了问题。

当用户登录时,整个 Relay 存储可能会被更改,因为“查看器”是根查询。但我不想在胖查询中列出我的整个查询树。能够以某种方式清除整个商店会很不错,但我看不到使用 react-router-relay 的方法。

中继突变:

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...
  

用法:

Relay.Store.commitUpdate(new LoginMutation(id_token), 
        onSuccess: (resp) => 
          history.push('/');
        
      );

GraphQL 架构:

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

【问题讨论】:

Release v0.8.0 的Release 引入了Relay.Environment,您可以将其实例化并传递给Relay.Renderer。它还没有记录。查看 github 问题的最后几个 cmets:Implement RelayStore.reset()。 【参考方案1】:

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

【讨论】:

以上是关于中继/路由器登录突变?的主要内容,如果未能解决你的问题,请参考以下文章

磊科路由器NW625PLUS无线WIFI中继教程

使用中继环境的突变

Axure中继器的使用

路由器repeater模式是啥意思

接交换机路由器要求

netcore 磊科无线路由为何不支持密码带有特殊字符?