使用:“react-apollo”:“^ 1.4.3”
在父组件中,我使用GraphQL查询具有子项’fundQuarterlyMetric’的父节点’Fund’.这将以以下格式返回数据:
{ id name ... fundQuarterlyMetrics (orderBy: asAtDate_ASC) { id year quarter ... } }
当我尝试创建一个新的fundQuarterlyMetrics时,我必须使用更新功能(Apollo Client docs)更新react-apollo上的本地存储.它给了我一个错误:
Can't find field Fund({}) on object (ROOT_QUERY) { "Fund({\"id\":\"cj57hpfips0x7014414u5tk8m\"})": { "type": "id","id": "Fund:cj57hpfips0x7014414u5tk8m","generated": false }
问题是,当我在console.log代理时,我可以看到基金和它的孩子们的数据….不知道该怎么做..
更新以下评论:
这是父组件数据请求:
export const fundPageQuery = gql` query Fund($fundId: ID!) { Fund(id: $fundId) { id name ....other variables fundQuarterlyMetrics (orderBy: asAtDate_ASC) { id year quarter ....other variables } }
}
`;
以下是我使用的选项:
var optionsForCreateFundMetric = { update: (proxy,{data: {createFundMetrics}}) => { try { console.log('proxy',proxy); const data = proxy.readQuery({query: FundQL.fundPageQuery}); console.log('data',data); data.Fund.fundQuarterlyMetrics.push(createFundMetrics); proxy.writeQuery({query: FundQL.fundPageQuery,data}) } catch (e) { console.log('error adding to store',e); }
}
};
export default compose( graphql(FundQL.createFundMetrics,{name: 'createFundMetrics',options: optionsForCreateFundMetric}),graphql(FundQL.updateFundMetrics,{name: 'updateFundMetrics'}) )(FundMetricsForm);
这是我的创建突变:
export const createFundMetrics = gql` mutation createFundQuarterlyMetric( $fundId: ID $year: Int! $quarter: FUND_QUARTERLY_METRIC_QUARTER! $netIRR: Float! $tvpi: Float! $rvpi: Float! $dpi: Float! $asAtDate: DateTime $calledThisQuarter: Float! $distributedThisQuarter: Float! $cumulativeCalled: Float! $cumulativeDistributed: Float! $limitedPartnersNAV: Float! $quarterlyValuationChangeLCY: Float $quarterlyTotalReturn: Float ) { createFundQuarterlyMetric( fundId: $fundId year: $year quarter: $quarter netIRR: $netIRR tvpi: $tvpi rvpi: $rvpi dpi: $dpi asAtDate: $asAtDate calledThisQuarter: $calledThisQuarter distributedThisQuarter: $distributedThisQuarter cumulativeCalled: $cumulativeCalled cumulativeDistributed: $cumulativeDistributed limitedPartnersNAV: $limitedPartnersNAV quarterlyValuationChangeLCY: $quarterlyValuationChangeLCY quarterlyTotalReturn: $quarterlyTotalReturn ) { id year quarter netIRR tvpi rvpi dpi asAtDate calledThisQuarter distributedThisQuarter cumulativeCalled cumulativeDistributed limitedPartnersNAV quarterlyValuationChangeLCY quarterlyTotalReturn }
}
`;
解
谢谢丹尼尔 – 我不得不退还基金ID以使其正常运行,谢谢!
export default compose( graphql(FundQL.createFundMetrics,options: optionsForCreateFundMetric,variables: {fundId: createFundQuarterlyMetric.fund.id}}),{name: 'updateFundMetrics'}) )(FundMetricsForm);