Проблема с dispatch () и оператором if-else после добавления другого метода - PullRequest
0 голосов
/ 12 октября 2018

У меня есть это действие для извлечения сведений о конкретном URL-адресе, хранящемся в Firebase.

Исходный код (версия 1) не сработал, при этом я отправляю authGetToken (), код распознает токен (строка) хранится в Redux, а затем использует его для извлечения сохраненных данных.

Версия 1

    return dispatch => {
        dispatch(authGetToken())
            .then(token => {
                return fetch("https://myProject/location.json?auth=" + token);
            })
            .catch(() => {
                alert("No valid token found!");
            })
            .then(res => {
                if (res.ok) {
                    return res.json();
                } else {
                    throw(new Error());
                }
            })
        };

Но теперь, когда я изменил требования к URL-адресу, включив пользовательский UID как частьURL, это не работает.Я знаю, что в моей логике должен быть недостаток, но я этого не вижу.

Что я надеялся написать, так это то, что как только я отправляю authGetToken (), токен отправляет authGetUserUID, а затем использует обе строки (userUID и token) для выборки данных.

Версия 2

    return dispatch => {
        dispatch(authGetToken())
            .then(token => {
                dispatch(authGetuserUID())
                return fetch("https://myProject/location/"+ userUID + ".json?auth=" + token);
            })
            .catch(() => {
                alert("No valid token found!");
            })
            .then(res => {
                if (res.ok) {
                    return res.json();
                } else {
                    throw(new Error());
                }
            })
        };

Буду признателен, что вы, ребята, указываете на очевидное для меня> <поскольку я, мои глаза-новички, не вижу этого.Заранее спасибо. </p>

1 Ответ

0 голосов
/ 12 октября 2018

Я думаю, что это может иметь какое-то отношение к userUID, похоже, оно нигде не инициализировано.Может быть, попробовать что-то вроде этого:

    return dispatch => {
        dispatch(authGetToken()).then(token => {
                dispatch(authGetuserUID()).then(userUID=>{
                   return fetch("https://myProject/location/"+ userUID + ".json?auth=" + token);
                })

            })
            .catch(() => {
                alert("No valid token found!");
            })
            .then(res => {
                if (res.ok) {
                    return res.json();
                } else {
                    throw(new Error());
                }
            })
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...