2017-01-31 6 views
2

В настоящее время я пытаюсь связать запросы API, чтобы получить информацию о пользователе с помощью React Native. Проблема, с которой я сталкиваюсь, заключается в том, что первый запрос на выборку обеспечивает ответ, который я ищу, но связанный запрос зависает.Заголовки, потерянные в запросе на выборки [React-Native]

Я смог сузить это, запустив API на своей машине, и вот в чем проблема. Когда выполняется первый запрос, заголовки в объекте конфигурации передаются без проблем. Когда выполняется второй запрос, загорается заголовок X-Tenant-Name, но по какой-то причине заголовок Authorization теряется в процессе, и поэтому запрос терпит неудачу.

Вот функция делает запросы:

async componentWillMount() { 
    const { authToken, selectedUser, tenant } = this.props; 

    const config = { 
     method: 'GET', 
     headers: { 
     'X-Tenant-Name': tenant, 
     'Authorization': 'Bearer ' + authToken 
     } 
    } 

    await fetch(URL + '/users/' + selectedUser.id, config) 
    .then(response => response.json()) 
    .then(response => { 
     this.setState({ user: response.data }); 
     const children = response.data.relationships.following_tips.data; 

     if (children.length) { 
     for (let i = 0; i < children.length; i++) { 
      fetch(URL + '/tips/' + children[i].id, config) 
      .then(response => response.json()) 
      .then(response => console.log(response)) 
      .done(); 
     } 
     } 
    }) 
    .done(); 
    } 

Любые идеи?

+0

Проблема в том, что вы не передаете конфигурацию ко второму. –

+0

Это мое плохое на передней панели. Ошибка возникает, даже когда объект конфигурации передается в –

+0

. Проверьте мой ответ, если он работает, пожалуйста, проголосуйте за него и примите его. Благодарю. –

ответ

0

Я думаю, что ваша проблема вызвана тем, что вы забываете пройти config ко второму fetch. Попробуйте это:

async componentWillMount() { 
    const { authToken, selectedUser, tenant } = this.props; 

    const config = { 
    method: 'GET', 
    headers: { 
     'X-Tenant-Name': tenant, 
     'Authorization': 'Bearer ' + authToken 
    } 
    } 

    await fetch(URL + '/users/' + selectedUser.id, config) 
    .then(response => response.json()) 
    .then(response => { 
    this.setState({ user: response.data }); 
    const children = response.data.relationships.following_tips.data; 

    if (children.length) { 
     for (let i = 0; i < children.length; i++) { 
     fetch(URL + '/tips/' + children[i].id, config) //Add config to this fetch too. 
     .then(response => response.json()) 
     .then(response => console.log(response)) 
     .done(); 
     } 
    } 
    }) 
    .done(); 
} 
+0

Это была моя ошибка, когда я копировал функцию из моего редактора. Ошибка возникает, когда передается объект конфигурации. –

+0

Хорошо, вы уверены, что ваша служба отвечает на эту конечную точку? Я имею в виду, как выглядит 'URL + '/ tips /' + children [i] .id'? Я подозреваю, что вы не получаете данные, поэтому вы никогда не попадаете во вторую выборку ... –

+0

Да, я уверен. Я получаю ответ от сервера, и у меня есть API, работающий локально, поэтому я могу видеть входящие заголовки. «X-Tenant-Name» находится в обоих ответах, но «Авторизация» находится только в первом. Поскольку API использует JWT для auth, все, что я возвращаю, это '{ошибка: 'Вам нужно зарегистрироваться или войти, прежде чем продолжить'}'. Где-то заголовок теряется. Я также удостоверился, что могу получить данные в этой конечной точке w/postman –