Javascript 如何在Firebase中基于对象的密钥UID删除对象?
我有一个React组件,它列出了房间的UID(Firebase中的随机ID),以及Javascript 如何在Firebase中基于对象的密钥UID删除对象?,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我有一个React组件,它列出了房间的UID(Firebase中的随机ID),以及roomName和creator 这是Firebase中的JSON结构: 任务很简单,单击X,我希望它删除关键用户单击的节点(及其子节点)。例如,如果用户按第二个键单击x,KetjGmLHYrbpX6xt_dd,Firebase将删除KetjGmLHYrbpX6xt_dd和RoomName:Holy孵化器|创建者:Robin const dbRef = firebase.initializeApp(config
roomName
和creator
这是Firebase中的JSON结构:
任务很简单,单击X
,我希望它删除关键用户单击的节点(及其子节点)。例如,如果用户按第二个键单击x,KetjGmLHYrbpX6xt_dd
,Firebase将删除KetjGmLHYrbpX6xt_dd
和RoomName:Holy孵化器|创建者:Robin
const dbRef = firebase.initializeApp(config).database().ref().child('rooms');
class App extends Component {
constructor(){
super();
this.state = {
text: '',
roomName: '',
creator: '',
firebaseList: {},
firebaseValuesArray: [],
firebaseUIDArray: []
}
}
componentDidMount(){
dbRef.on('value', snap => {
this.setState({
firebaseList: snap.val(),
firebaseUIDArray: Object.keys(snap.val())
}, () => {});
});
}
...
//function that's supposed to remove the item
removeItem(index){
dbRef.child(index).remove();
}
...
render(){
return (
...
<DisplayFirebaseValues removeItem={this.removeItem.bind(this)} firebaseList={this.state.firebaseList} />
...
//on DisplayFirebaseValues.js:
class DisplayFirebaseValues extends React.Component{
render(){
const firebaseUID = Object.keys(this.props.firebaseList).map((firebaseItem, index) => {
return <li key={index}><a href="#" onClick={this.props.removeItem}>X</a> {firebaseItem}</li>
})
...
我如何使其工作,以便用户可以单击X
并删除该特定数据?我试过了,但没有成功。我错过了一些东西,但不知道是什么
PS:如果有帮助,我将整个房间
对象存储在this.state.firebaseList
中,并将this.state.firebaseUIDArray中的所有键存储在中
firebaseList: Object {-KeoiS8luCsuKhzc_Eut: Object, -KetjGmLHYrbpX6xt_dd: Object, -Kf99qMofAEvj1ajmPc5: Object}
firebaseUIDArray: ["-KeoiS8luCsuKhzc_Eut", "-KetjGmLHYrbpX6xt_dd", "-Kf99qMofAEvj1ajmPc5"]
看起来您没有在bound removeItem函数中传回映射的对象键。您可以这样做:onClick={()=>this.props.removietem(firebaseItem)}
您是否发现了错误?我也有类似的情况。看起来您没有在bound removeItem函数中传回映射的对象键。您可以这样做:onClick={()=>this.props.removietem(firebaseItem)}
您是否发现了错误?我也有类似的情况。
firebaseList: Object {-KeoiS8luCsuKhzc_Eut: Object, -KetjGmLHYrbpX6xt_dd: Object, -Kf99qMofAEvj1ajmPc5: Object}
firebaseUIDArray: ["-KeoiS8luCsuKhzc_Eut", "-KetjGmLHYrbpX6xt_dd", "-Kf99qMofAEvj1ajmPc5"]