如何使用React在Firebase中向用户添加子数据并检索该数据?

时间:2018-10-29 21:55:44

标签: reactjs firebase firebase-realtime-database

我可能不会很好地解释这一点,因为这很混乱,但是我在React应用程序中有一个项目列表,希望人们能够将其标记为最喜欢的项目。当该人进入其个人资料时,他们将能够看到他们喜欢的项目的列表。因此,当我引用它时,我基本上想要users.currentUser.favorites

我不确定如何将“收藏夹”特别添加为当前用户的子级(已通过Firebase认证),或者如何在新条目“收藏夹”时获取并更新它。

我要使用的数据库结构,只是我希望用户拥有一个“ favoritePokemon”列表: enter image description here

我尝试将列表添加到当前登录用户,但是当我尝试使用var myUserId = firebase.auth().currentUser.uid;指定当前登录用户时,它说“ currentUser”未定义,因此我不确定到底如何我应该以该用户的数据为目标。

在我的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);
}

0 个答案:

没有答案