Apollo 客户端给我一个错误 'store already contains an id' - 这是什么意思?

Apollo client is giving me an error of 'store already contains an id' - what does that mean?

在一个 React Native 项目中,我正在创建一个对象,然后将屏幕重定向到新创建的对象的详细信息页面,我收到此错误:

可能未处理的承诺拒绝(id:0): 网络错误:存储错误:应用程序试图写入未提供 ID 的对象,但存储已包含此对象的 XYZ ID。

查看数据库,我发现该项目已在上一步中正确创建。通过列表导航到同一屏幕和项目(不是在创建和重定向之后)似乎工作正常。我是否必须等待或以某种方式设置某种时间让 apollo 商店保持正确?

我正在使用标准的 apollo 客户端@graphql binding/wrapping

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 {
...

您还必须将 id 添加到 creator 字段:

query getEvent($eventId: ID!) {
    Event(id:$eventId) {
      id
      headline
      photo
      location
      startTime
      creator {
        id
        username
        photo
      }
    }
  }

一般来说,确保将 id 添加到查询的所有子选择中。