使用Firebase中的特定键打印数据

时间:2019-06-02 11:06:29

标签: javascript firebase react-native firebase-realtime-database

在我的React Native应用程序中,我尝试从Firebase数据库打印具有特定密钥(从另一个组件传递)的数据。我曾经使用过类似的代码来获取所有数据库数据,但是却得到了空白。

var data = []
var currentUser;

class FavPlant extends React.Component {

constructor(props){
    super(props)

     this.ds = new ListView.DataSource({rowHasChanged:(r1,r2) => r1 !==r2})

     this.state = {
         listViewData : data
     }
 }

 componentDidMount(){

  const { navigation } = this.props;
  const keyPlant = navigation.getParam('keyPlant');

  firebase.auth().onAuthStateChanged((user) => {

    if (user != null) {
      var that = this

    firebase.database().ref(user.uid).child('plantList').equalTo('keyPlant').on('child_added',function(data){

        var newData = [...that.state.listViewData]
        newData.push(data)

        that.setState({ listViewData: newData})

    });
  }
})
 }

render(){ return(
<Container>
      <Content>
         <ListView
            enableEmptySections
            dataSource = {this.ds.cloneWithRows(this.state.listViewData)}
            renderRow={data =>
                <Text>{data.val().bloom}</Text>
            }/>
            </Content>
        </Container>
 )}

Database structure

1 个答案:

答案 0 :(得分:0)

如果您的JSON中的DatabaseReference元素中有一个plantList

var plantListRef = ...

然后您可以通过以下方式获得具有特定键的子节点:

plantListRef.child("-Lg-l2GOOVC_Hni5a3ng").on('value',function(snapshot){
  console.log(snapshot.key); // prints "-Lg-l2GOOVC_Hni5a3ng"
  console.log(snapshot.val());
});