46

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

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

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

我正在使用标准的 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 {
...
4

1 回答 1

81

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

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

通常,请确保添加id到查询的所有子选择中。

于 2017-02-01T13:52:56.840 回答