Mutação não buscar dados especificados pela consulta de gordura em conjunto com RANGE_ADD?

votos
3

Eu estou tentando entender RANGE_ADD. Eu forneci a configuração mutação, pois RANGE_ADD, com todas as informações necessárias. Eu uso a viewerconvenção de nomenclatura, com minhas conexões aninhada dentro viewer. Abaixo está o que a minha completa Relé mutação parece ...

import Relay from react-relay;

export default class CreateTeamMutation extends Relay.Mutation {
  static fragments = {
    viewer: () => Relay.QL`
      fragment on Viewer {
        id
      }
    `
  }

  getMutation() {
    return Relay.QL`
      mutation { createTeam }
    `;
  }

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

  getFatQuery() {
    return Relay.QL`
      fragment on CreateTeamPayload {
        edge,
        viewer {
          teams
        }
      }
    `;
  }

  getConfigs() {
    console.log(this.props.viewer);
    return [{
      type: RANGE_ADD,
      edgeName: edge,
      parentID: this.props.viewer.id,
      parentName: viewer,
      connectionName: teams,
      rangeBehaviors: {
        : append
      }
    }];
  }
};

Eu proporcionar um fragmento para a vieweridentificação, o qual em tempo de execução, no interior getConfigs, que pode ver está presente.

Na carga útil de resposta GraphQL Mutation, CreateTeamPayloado viewercampo é fornecido para que relé pode fazer uso da conexão dentro da configuração de mutação para RANGE_ADD. Além disso, no interior CreateTeamPayload, a nova extremidade é fornecido como edge.

Estes três bits de informação (id espectador para o pai, as informações de conexão ea borda) parecem ser tudo o que RANGE_ADDexige. Também certifique-se de solicitar esses dados a partir do servidor, através da consulta gordura para que Revezamento tem acesso a ele para a configuração mutação.

O relé não parece ser incluindo o que eu especificado na consulta de gordura, eo que é necessário para a configuração de mutação, no que despacha para o servidor, no entanto. Tudo o que Relé está solicitando é a clientMutationId. Aqui está o pedido feito pelo relé ...

{
  query: mutation CreateTeamMutation($input_0:CreateTeamInput!){createTeam(input:$input_0){clientMutationId}},
  variables: {
    input_0: {
      name: foo bar,
      clientMutationId: 0
    }
  }
}

E, na moda reação em cadeia, isso faz com que Relay, que está esperando o viewere edgepara a configuração de mutação, para lançar um erro ...

Warning: writeRelayUpdatePayload(): Expected response payload to include the newly created edge `edge` and its `node` field. Did you forget to update the `RANGE_ADD` mutation config?

Esses campos obrigatórios poderia totalmente estar lá se Relé os tinha incluído. Será que RANGE_ADDtem que ser acompanhado por REQUIRED_CHILDRENpara este trabalho? A mutação passa para o servidor, eo registro é criado no servidor, é apenas a mutação de configuração do lado do cliente não consegue incorporar os dados alterados para a loja.

Publicado 04/01/2016 em 21:19
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Este é provavelmente um caso de um aviso ambíguo: https://github.com/facebook/relay/issues/542

Relé cruza os comportamentos alcance com as conexões previamente buscados.

Seus comportamentos alcance aqui apenas definir o que fazer quando a conexão equipes não está sob a influência de qualquer chamada. Como você está chamando sua conexão equipes no app?

Por exemplo, se seu aplicativo busca teams(order_by: 'recent'), você deve definir um comportamento gama como este'orderby(recent)': 'append'

Respondeu 07/01/2016 em 23:22
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more