在使用graphql进行另一个查询之前,如何等待查询完成?

时间:2019-02-05 10:35:39

标签: reactjs react-native graph apollo react-apollo

我有一个名为GET_ME的查询和另一个名为GET_USER_NOTIFICATIONS的查询。第二个它正在寻找来自第一个查询的用户ID。我的问题是有时我会收到[TypeError: undefined is not an object (evaluating 'o.props.getMe.me._id')]

这是我的代码:

export default compose(
  withApollo,
  graphql(GET_ME, { name: "getMe" }),
  graphql(GET_USER_NOTIFICATIONS, {
    name: "notification",
    skip: props => !props.getMe || !props.getMe.me,
    options: props => ({
      variables: { r_id: props.getMe.me._id }
    })
  })
)(Notifications);

有帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试做吗:

variables: { r_id: props.getMe && props.getMe.me ? props.getMe.me._id : null }
// I use "null" in case the object doesn't exists. 
// You can use value that your graphql needs.

(为简单起见,您也可以使用lodash _.get(...)

该错误表明,尽管您已将查询设置为跳过,但它正在执行变量分配。但是在分配时,getMegetMe.me都是“未定义的”。

如果这样做没有帮助,则可以在render方法内使用 Render props Apollo组件。这样,您可以保证无法访问getMe.me._id才能设置变量。