【发布时间】:2019-06-02 11:06:29
【问题描述】:
在我的 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>
)}
【问题讨论】:
-
您的
.equalTo('keyPlant')是一个常量字符串,而不是您的实际变量。你应该把它改成.equalTo(keyPlant)。 -
我已经从 .equalTo('keyPlant') 中删除了撇号,但我仍然没有得到任何结果。当我从 navigation.getParam('keyPlant'); 中删除撇号时;我也没有得到任何结果和黄色警告:“Posiible Unhandled Promise Rejection (id:0) Error: Query.equalTo failed: First argument contains undefined property '0kN4FpYslQQfvxJ8ZdWfRCsOZ6P2.plantList'
标签: javascript firebase react-native firebase-realtime-database