Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未删除Firebase子级,父级为_Javascript_Firebase_React Native_Firebase Realtime Database - Fatal编程技术网

Javascript 未删除Firebase子级,父级为

Javascript 未删除Firebase子级,父级为,javascript,firebase,react-native,firebase-realtime-database,Javascript,Firebase,React Native,Firebase Realtime Database,我正在使用react native并试图删除一个child ref,我的函数是 cancelSleep = ()=> { const rootRef = firebase.database().ref("SleepSettings/") rootRef.child(`${this.state.user}/`).remove().then( ()=> this.setState({sleepConfirmed: false})) } 我尝试了许多不同的组合,无论是哪种方式

我正在使用react native并试图删除一个child ref,我的函数是

cancelSleep = ()=> {
  const rootRef = firebase.database().ref("SleepSettings/")
  rootRef.child(`${this.state.user}/`).remove().then( ()=>
  this.setState({sleepConfirmed: false}))
}

我尝试了许多不同的组合,无论是哪种方式,都会删除整个ref“SleepSettings”及其所有子节点,而不仅仅是子节点ref,请参见图片。

在实时数据库中,当节点不再有任何子节点时,它将从控制台的显示中删除。您看到的是SleepSettings的唯一子项正在被删除,这意味着SleepSettings本身已从显示中删除

实际上,实时数据库中并不真正存在节点。它只是获取值的路径的一部分,如以下路径:

SleepSettings/bill@bill/sleepConfirmed
具有此值的:

true
任何没有附加值的子级都只是其他子级的组织者,当其所有子级值都消失时,组织者实际上也消失了,因为没有指向要组织的值的路径


换句话说,它们根本不像文件系统文件夹那样工作,文件系统文件夹存在并且可以是空的。

在实时数据库中,当节点不再有任何子节点时,它将从控制台的显示中删除。您看到的是SleepSettings的唯一子项正在被删除,这意味着SleepSettings本身已从显示中删除

实际上,实时数据库中并不真正存在节点。它只是获取值的路径的一部分,如以下路径:

SleepSettings/bill@bill/sleepConfirmed
具有此值的:

true
任何没有附加值的子级都只是其他子级的组织者,当其所有子级值都消失时,组织者实际上也消失了,因为没有指向要组织的值的路径


换句话说,它们根本不像文件系统文件夹那样工作,文件系统文件夹存在并且可以是空的。

许多修改此函数的变体都会产生相同的行为,例如cancelSleep=()=>{firebase.database().ref(“SleepSettings/”).child(
${this.state.user}
).remove()。然后(()=>this.setState({sleepConfirmation:false}))解决了@yazmnh87No这个问题还没有为我解决,谢谢你的提问。我在尝试获取数据时也发现了同样的情况,它只识别父ref.getBedTime=()=>{firebase.database().ref(“SleepSettings/”).child(
${this.state.user}
).one(“value”,snapshot=>{if(snapshot.val()!==null){const data=snapshot.val();console.log(数据);this.setState({chosenDate:new Date(data[
${this.state.user}
].bedtime),sleepConfirm:data[
${this.state.user}
].sleepConfirm},console.log(this.state));});让我看看你的代码,@yazmnh87重写这个函数的许多变体都会产生相同的行为,比如cancelSleep=()=>{firebase.database().ref(“SleepSettings/”).child(
${this.state.user}
).remove()。然后(()=>这个.setState({sleepConfirmation:false}))解决了吗@yazmnh87No这个问题还没有为我解决,谢谢你的提问。我在尝试获取数据时也发现了同样的情况,它只识别父ref.getBedTime=()=>{firebase.database().ref(“SleepSettings/”).child(
${this.state.user}
).one(“value”,snapshot=>{if(snapshot.val()!==null){const data=snapshot.val();console.log(数据);this.setState({chosenDate:new Date(data[
${this.state.user}
].bedtime),sleepConfirm:data[
${this.state.user}
].sleepConfirm},console.log(this.state));});让我看看你的代码,@yazmnh87所以如果有其他用户数据,它只会删除引用子节点而不是整个节点?是的,你自己测试应该很容易。所以如果有其他用户数据,它只会删除引用子节点而不是整个节点?是的,这对你自己来说应该很容易测试。