修改 Apollo 客户端查询结果中深度嵌套的数据

问题描述

我正在使用 @apollo/clientStoryblok's API 获取数据。

我想遍历返回数据中的所有字段以可能清理其内容(它包含原始 HTML)。因为 Apollo 使结果数据不可变,所以我不能这样做:

const client = new ApolloClient({
  uri: "https://gapi.storyblok.com/v1/api",cache: new InMemoryCache(),headers: {
    token: "EXAMPLE",},});

function sanitizefields(obj) {
  for (const field of obj) {
    if (field?.type === "custom-rich-text") {
      field.content = sanitizeContent(field.content); // ? This generates an error because I'm trying to modify a read only object
    }

    if (Array.isArray(field) || isPlainObject(field)) {
      sanitizefields(field);
    }
  }
}

const postData = await client.query({ query: MY_QUERY });

sanitizefields(postData?.data?.Page);

如何在事先不知道特定字段名称的情况下修改@apollo/client 返回的深层嵌套数据?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)