问题描述
我正在尝试使用 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 (将#修改为@)