Как добавить дочерние данные пользователю в Firebase с помощью React и получить эти данные? - PullRequest
0 голосов
/ 30 октября 2018

Я, вероятно, не собираюсь объяснять это хорошо, так как в моей голове беспорядок, но у меня есть список элементов в приложении React, которые я хочу, чтобы люди могли помечать как избранные. Когда этот человек зайдет в свой профиль, он сможет увидеть список предметов, которые ему понравились. Поэтому, когда я ссылаюсь на это, я, по сути, хочу users.currentUser.favorites.

Я не уверен, как именно добавить «избранное» в качестве дочернего элемента текущего пользователя (прошедшего проверку подлинности с помощью Firebase) или как захватить его и обновить, когда новый элемент «добавлен в избранное».

Структура базы данных, к которой я иду, за исключением того, что я хотел бы, чтобы у пользователя был список "favourPokemon": enter image description here

Я пытался добавить список к текущему вошедшему в систему пользователю, но когда я пытаюсь указать текущего вошедшего в систему пользователя с помощью var myUserId = firebase.auth().currentUser.uid;, он говорит, что «currentUser» не определен, поэтому я не уверен, как именно m должен предназначаться для данных для этого пользователя.

Настройка текущего пользователя в моем App.js

componentWillMount() {
    let data = jsonData.data.results;
    let id = 0;
    data.forEach(item => {
      id = id + 1;
      item.id = id;
    });
    this.setState({
      allPokemonData: data.slice(0, 151),
    });
    auth.onAuthStateChanged(currentUser => {
      this.setState({ currentUser });
    });
  }

Передача currentUser как реквизита моему компоненту:

render() {
const { allPokemonData, currentUser } = this.state;
return (
  <div className="app-wrapper">
    <Header currentUser={currentUser} />
    <Route 
      exact 
      path="/" 
      component={Home} 
    />
    <Route
      exact
      path="/allpokemon"
      render={props => <PokemonList allPokemon={allPokemonData} currentUser={currentUser} />}
    />
    <Route
      exact
      path={`/pokemon/:id`}
      render={props => <PokemonDetails {...props} allPokemon={allPokemonData} />}
    />
    <Route
      path="/profile"
      render={props => <Profile currentUser={currentUser} />}
    />
  </div>
)

}

После этого я пытался установить ссылку в моем компоненте:

if (this.props.currentUser) {
   this.usersRef = database.ref('users/' + this.props.currentUser.uid);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...