Получение данных из базы данных Firebase Realtime из приложения React-redux - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь запросить данные из моей базы данных Firebase в реальном времени на основе дочернего значения matchID.

Ниже приведен экспорт в JSON моей таблицы matchPredictions, в которой есть только одна запись.

{
  "-LP0aVMsmqfdHj7yfPnK" : {
    "matchID" : "-LP0LKl_nR4VQf6Gxwz8",
    "matchKickoff" : "2019-01-12T12:00",
    "teamAName" : "Germany",
    "teamAScore" : "2",
    "teamBName" : "Denmark",
    "teamBScore" : "3",
    "userId" : "RZVbxcIB1SWxj0ohgJDqkEU9ia13"
  }
}

У меня есть следующая функция, которая вызывается ..

export const fetchPredictionsForCompletedMatch = (match, token) => {
    console.log("Match is " +match);
    console.log("matchPredictionsFBRef is " + matchPredictionsFBRef);
    const retrievePreds = matchPredictionsFBRef.orderByChild("matchID").equalTo(match).on("value",
        function(snapshot){
        console.log("Snapshot here is "+ snapshot);
    });
    return dispatch => {
        retrievePreds.then(
            response => dispatch(addMatchResultSuccess(match))
        )
            .catch(
                err => dispatch(addMatchResultFail(err))
            )
    }
}

Значение для совпадения равно -LP0LKl_nR4VQf6Gxwz8, как и ожидалось, а matchPredictionsFBRef равно https://projectOne.firebaseio.com/matchPredictions,, то есть к таблице, которую я пытаюсь запросить.

При запуске выдается ошибка «Ошибка типа: ошибка: retrievePreds.then не является функцией» и снимок не выводится на консоль.

Любая помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

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

Метод Firebase on() может давать результаты несколько раз.Поскольку обещание может быть выполнено только один раз, метод on() не может вернуть обещание.

Если вы хотите получить результат только один раз, используйте метод once() Firebase вместо on():

const retrievePreds = matchPredictionsFBRef.orderByChild("matchID").equalTo(match).once("value",
  ...
0 голосов
/ 17 октября 2018

Можете ли вы вызвать функцию до создания цепочки?

retrievePreds (). Then ()

...