我有一个React组件,列出了房间的UID(Firebase中的随机ID),以及roomName
和creator
。
这是Firebase中的JSON结构:
任务很简单,点击X
后,我希望它删除任何关键用户点击的节点(及其子节点)。例如,如果用户点击第二个密钥x KetjGmLHYrbpX6xt_dd
,则Firebase会删除KetjGmLHYrbpX6xt_dd
和 RoomName: Holy Incubator | Creator: 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>
})
...
我们的想法是传递DisplayFirebaseValues.js
中的密钥(随机UID),以便removeItem(index)
获取找到该特定Firebase UID的密钥,并删除该节点。但是,当我单击X时,我收到以下错误:
Uncaught Error: Firebase.child failed: First argument was an invalid path: "[object Object]". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"
如何让它工作,以便用户点击X
并删除该特定数据?我试过了this SO post,但它没有用。我错过了什么,但不能说出什么。
PS :如果有帮助,我将整个rooms
对象存储在this.state.firebaseList
以及this.state.firebaseUIDArray
firebaseList: Object {-KeoiS8luCsuKhzc_Eut: Object, -KetjGmLHYrbpX6xt_dd: Object, -Kf99qMofAEvj1ajmPc5: Object}
firebaseUIDArray: ["-KeoiS8luCsuKhzc_Eut", "-KetjGmLHYrbpX6xt_dd", "-Kf99qMofAEvj1ajmPc5"]