Я пытаюсь получить одно поле из моей базы данных 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 безуспешно.