Apollo Client-cache.gc() 不从规范化缓存中删除对象

问题描述

我正在尝试使用 cache.gc() 在执行突变后从规范化缓存中删除一个对象。当我删除来自服务器的对象时,我只能从缓存中删除规范化的对象。换句话说,我无法在客户端创建对象(会话)后立即从规范化缓存中删除它。 Cache.gc() 只是不适用于我的 writeFragment 中标准化缓存中新创建的会话/会话。

REACT- 创建新会话

const newSessionSubmit = () => {
    newSession({variables: { title: title,price: price,description: description,durationMinutes: durationMinutes },update: (cache,{ data }) => {
       newSessionFromresponse]
        cache.modify({
          fields: {
            allSessionPackages(existingPackageRefs = []) {
              const newSessionPackageRef = cache.writeFragment({
                data: data?.createSessionPackage.session,fragment: gql`
                  fragment NewSessionPackage on SessionPackage {
                    id
                    title
                    price
                    description
                    durationMinutes
                  }
                `
              })
              return [...existingPackageRefs,newSessionPackageRef]
            }
          }
        })
      }
    })

REACT- 删除会话

const handleDelete = (session) => {
    deleteSession({
      variables: { id: session.id },{ data }) => {
        if (data?.deleteSessionPackage.outcome) {
          cache.modify({
           fields: { allSessionPackages(existingPackages,{ readField }) {
              return existingPackages.filter(sessionPackage => {
                  return session.id !== readField('id',sessionPackage)
                }
           );
            }
          }
          })
          cache.gc();
      }
      }
    })
  }

姜戈石墨烯

class CreateSessionPackage(graphene.Mutation):
    class Arguments:
        title = graphene.String()
        price = graphene.Float()
        duration_minutes = graphene.Int()
        description = graphene.String()

    session = graphene.Field(SessionPackageType)

    @classmethod
    def mutate(cls,root,info,title,price,duration_minutes,description):
        session = SessionPackage.objects.create(title=title,price=price,duration_minutes=duration_minutes,description=description)

        return CreateSessionPackage(session=session)

解决方法

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

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

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