Получить данные из Firebase / React - PullRequest
0 голосов
/ 25 ноября 2018

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

Этот пост помог мне понять проблему: https://medium.com/google-developers/why-are-firebase-apis-asynchronous-callbacks-promises-tasks-e037a6654a93. Я застреваю, потому что это асинхронный вызов.

В журнале 1. Я получаю фактическое значение, но в журнале 2Я получаю [Обещание объекта] в результате.Вот мой кодСначала часть, где я пытаюсь использовать данные.Это членство.status:

export const ExpenseList = (props) => (
  <div className="content-container">
    <div className="list-header">
      <div className="show-for-mobile">Podcasters</div>
      <div className="show-for-desktop">Podcaster</div>
      <div className="show-for-desktop">Details</div>
    </div>
    <div className="list-body">

      { console.log('Log 2.' + props.membership)}

      {
        props.membership === "active" ? (
            props.expenses.map((expense) => {
              return <ExpenseListItemSub key={expense.id} {...expense} />;
            })
          ) : (
            props.expenses.map((expense) => {
              return <ExpenseListItem key={expense.id} {...expense} />;
            })
          )
      }
    </div>
  </div>
);

const mapStateToProps = (state) => {
  return {
    expenses: selectExpenses(state.expenses, state.filters),
    membership: membershipS(state.membership) // modif Header
    }
  };

export default connect(mapStateToProps)(ExpenseList);

Вот вызов базы данных

let currentUser = null;
let membeIsActive = null;
firebase.auth().onAuthStateChanged(firebaseUser => {
  if (firebaseUser) {
    currentUser = firebaseUser.uid;
  }
  });

  export default (membership) => {
    var firstName = "unknown"

    var promise = firebase.database()
        .ref(`/users/${currentUser}/pro-membership`)
        .once('value');

    return promise.then(snapshot => {
        firstName = snapshot.val().status;
        console.log('Log 1.' + firstName);
    })

    };

Попытка с использованием async / await безуспешно.

...