我有一个在创建或更新时触发的upsert查询.在更新时,Apollo将结果集成到缓存中,但在创建时却没有.
这是查询:
export const UPSERT_NOTE_MUTATION = gql` mutation upsertNote($id: ID, $body: String) { upsertNote(id: $id, body: $body) { id body } }`
我的客户:
const graphqlClient = new ApolloClient({ networkInterface, reduxRootSelector: 'apiStore', dataIdFromObject: ({ id }) => id });
来自服务器的响应是相同的:返回两者id
并body
返回,但Apollo不会data
自动将新ID添加到缓存对象中.
是否有可能让Apollo自动添加新对象而data
不会触发后续获取?
这是我的数据存储的样子:
UPDATE
根据文档,该函数updateQueries
应该允许我将新元素推送到我的资产列表,而不必再次触发我的原始获取查询.
该函数被执行但该函数返回的任何内容都被完全忽略,并且不修改缓存.
即使我做这样的事情:
updateQueries: { getUserAssets: (previousQueryResult, { mutationResult }) => { return {}; } }
没有什么变化.
更新#2
仍然无法获取我的资产列表进行更新.
在里面updateQueries
,这是我的previousQueryResult
样子:
updateQueries: { getUserAssets: (previousQueryResult, { mutationResult }) => { return { assets: [] .concat(mutationResult.data.upsertAsset) .concat(previousQueryResult.assets) } } }
但无论我返回什么,数据存储都不刷新:
作为参考,这是每个asset
看起来像: