簡體   English   中英

無法轉換/規范化/修改 GraphQL 查詢的響應 - Apollo Client

[英]Can't transform/normalize/modify response of GraphQL query - Apollo Client

任何人都有過修改響應數據的后件的經驗?

  const parseResponse = new ApolloLink((operation, forward) => {
    return forward(operation).map((response) => {
      response.data.parsed = transformData(response.data)
      return response
    })
  })
  const link = parseResponse.concat(networkLink)

這對 websockets 事件非常有效 - 數據被轉換,添加到數據response.data中的這個parsed字段,但在常規<Query...請求中,解析字段被刪除,因此組件無法讀取它。 我已經確認在查詢請求中正確調用了此方法,並且還添加了parsed字段,但是在 afterware 和組件之間的某個地方, parsed字段被剝離

Apollo Client v3 引入了一個用於自定義緩存字段行為的功能:

您可以自定義 Apollo 客戶端緩存中各個字段的讀取和寫入方式。 為此,您FieldPolicy為給定字段定義一個FieldPolicy對象。 您可以在與包含該字段的類型對應的任何TypePolicy對象中嵌套一個FieldPolicy對象。

以下是將日期字符串解析為 Date 對象的方法:

export const apolloClient = new ApolloClient({
  link: ...,
  cache: new InMemoryCache({
    typePolicies: {
      Post: {
        fields: {
          updatedAt: {
            read(time: string) {
              return new Date(time);
            },
          },
        },
      },
    },
  }),
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM