首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apollo-link-rest:响应中包含动态字段的查询

apollo-link-rest:响应中包含动态字段的查询
EN

Stack Overflow用户
提问于 2020-07-02 21:24:08
回答 1查看 232关注 0票数 1

我正在请求Salesforce模式数据。它有一种格式

代码语言:javascript
复制
res = {
  Id: { name, type, label },
  IsDeleted: { type, name, label },
  MasterRecordId: { type, name, label },
 ...and so on
}

因此,字段是动态的。在queries.js中,我试图描述它

代码语言:javascript
复制
export const GET_SALESFORCE_FIELDS = gql`
  query SalesforceFields {
    salesforceFields @rest(endpoint: "schemaservice", type: "SalesforceFields", path: "/fields") {
       // What should be here??
   }
  }
`;
`

如何描述动态部分?我没有任何模式文件或解析器。仅限queries.js (用于使用useQuery的后续请求)和client.js (定义new ApolloClient的位置)

代码语言:javascript
复制
"@apollo/client": "^3.0.0-rc.10",
"apollo-link-rest": "^0.8.0-beta.0"
EN

回答 1

Stack Overflow用户

发布于 2020-07-06 19:46:40

解决方法如下:

代码语言:javascript
复制
// queries.js
export const GET_SALESFORCE_FIELDS = gql`
  query SalesforceFields {
    salesforceFields @rest(endpoint: "schemaservice", type: "SalesforceFieldsPayload", path: "/fields") {
      items @type(name: "Salesforce")
    }
  }
`;

// client.js
const restLink = new RestLink({
  ...,
  typePatcher: {
    SalesforceFieldsPayload: (
      data,
      outerType,
      patchDeeper
    ) => {
      if (data != null) {
        data.items = Object.keys(data).map(field => ({ __typename: "Salesforce", ...data[field] }));
      }
      return data;
    }
  }
});

对GitHub的引用:https://github.com/apollographql/apollo-link-rest/issues/258

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

https://stackoverflow.com/questions/62697383

复制
相关文章

相似问题

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