Обновить значение из узла в Firebase Realtime-Database в Redux - PullRequest
0 голосов
/ 13 июля 2020

Каждый раз, когда в моей базе данных создается новая группа, я хочу запускать счетчик в узле / category / categoryId / groupsCount в моей базе данных реального времени с помощью redux. Я создал этот код, чтобы получить текущий счетчик значения groupsCount для этого конкретного categoryId, и попытался обновить () с +1. Это не сработало, и я не нашел другого способа сделать эту простую вещь.

export const updateCategoryGroupCount = categoryId => {
  return async dispatch => {
    const currentCount = firebase
      .database()
      .ref('/categories/' + categoryId + '/groupsCount')

    await firebase
      .database()
      .ref('/categories/' + categoryId)
      .update({ groupsCount: currentCount + 1 })
      .then(
        dispatch({
          type: UPDATE_CATEGORY_COUNT,
          cid: categoryId,
          total: currentCount + 1;
        })
      );
  };
};

Как мне получить значение из / category / id / groupCounts с помощью запроса firebase?

1 Ответ

0 голосов
/ 13 июля 2020

currentCount назначается обещание, которое возвращается из firebase, и второй запрос должен вызываться после выполнения первого.

Измените свой код следующим образом

export const updateCategoryGroupCount = categoryId => {
  return async dispatch => {
       firebase
      .database()
      .ref('/categories/' + categoryId + '/groupsCount')
      .once("value")
      .then((snapshot)=> {
         let fetchedObj = snapshot.val(); //the object which is included fields belong to the path of '/categories/' + categoryId + '/groupsCount'
         let currentCount = fetchedObj.currentCount;

         await firebase
         .database()
         .ref('/categories/' + categoryId)
         .update({ groupsCount: currentCount + 1 })
         .then(
            dispatch({
              type: UPDATE_CATEGORY_COUNT,
              cid: categoryId,
              total: currentCount + 1;
            })
         );
      })
    
  };
};
...