在一个反应本机项目中,我正在创建一个对象,然后将屏幕重定向到新创建的对象的详细信息页面,我收到此错误:
可能未处理的承诺拒绝(id:0): 网络错误:存储错误:应用程序尝试编写没有提供ID的对象,但商店已包含此对象的ID为XYZ。
查看数据库,我发现该项目已在上一步中正确创建。通过列表导航到同一屏幕和项目(不是在创建和重定向之后)似乎工作正常。我是否必须等待或以某种方式为apollo商店设置某种时机以保持正确?
我正在使用标准的apollo客户端@graphql绑定/包装
GQL:
query getEvent($eventId: ID!) {
Event(id:$eventId) {
id
headline
photo
location
startTime
creator {
username
photo
}
}
}
`;
这是一段代码片段
@graphql(getEventGql,{
options: ({route}) => {
console.log('route params', route.params);
return {
variables: {
eventId: route.params.eventId,
}
}
},
})
@connect((state) => ({ user: state.user }))
export default class EventDetailScreen extends Component {
...
答案 0 :(得分:32)
您还必须将id
添加到creator
字段:
query getEvent($eventId: ID!) {
Event(id:$eventId) {
id
headline
photo
location
startTime
creator {
id
username
photo
}
}
}
通常,请务必将id
添加到查询的所有子选项中。