在SearchType上中继RANGE_ADD queryConfig

时间:2017-03-14 14:41:15

标签: javascript graphql relayjs

如果新项目的RANGE_ADD类似于没有ID属性的parent,我试图了解SearchType变异应该使用哪个配置。 在这种情况下应该使用什么parentId或者应该如何配置这个突变?如果我没有指定parentID,则新创建的项目将不会添加到中继存储中。

我在Relay repo中已经阅读了很多问题,但我仍然不清楚如何正确处理这种突变。

1 个答案:

答案 0 :(得分:0)

在您的情况下,使用静态ID创建SearchType对象会起作用。这是使用graphql-ruby的示例,但该概念应该适用于任何实现:

https://github.com/gauravtiwari/relay-rails-blog/blob/8b257c3d32b7ef9d1aab4420257d8b6471006d0a/app/models/viewer.rb

客户端实现如下:

class SearchPostMutation extends Relay.Mutation {
  getMutation() {
    return Relay.QL`mutation {searchPosts}`;
  }

  getVariables() {
    return {
      // For debug, you can hard code your SearchType object's id here. 
      id: 'SA9bdDbpc4QtwzppZD0+IbJsE4QgzQ==',
    };
  }

  getConfigs() {
    return [{
      type: 'RANGE_ADD',
      parentName: 'searchPost',
      // For debug, you can hard code your SearchType object's id here. 
      parentID: 'SA9bdDbpc4QtwzppZD0+IbJsE4QgzQ==',
      connectionName: 'posts',
      edgeName: 'newPostEdge',
      rangeBehaviors: {
        '': 'prepend',
      },
    }];
  }
}