Как мне дождаться завершения запроса, прежде чем делать еще один запрос с graphql? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть запрос с именем GET_ME, а другой - с именем GET_USER_NOTIFICATIONS.Второй - поиск идентификатора пользователя из первого запроса.Моя проблема в том, что иногда я получаю [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 голосов
/ 05 февраля 2019

Можете ли вы попробовать сделать:

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(...))

Ошибка предполагает, что она выполняет присвоение переменных, хотя вы задали запросбыть пропущенным.Но на момент назначения getMe или getMe.me не определено.

Если это не поможет, вы можете использовать Render props Apollo компоненты внутри метода рендеринга.Таким образом, вы можете гарантировать, что не сможете установить переменную, не получив доступа к getMe.me._id.

...