【问题标题】:i want to search for a child in database then remove it but it won't work here我想在数据库中搜索一个孩子然后删除它,但它在这里不起作用
【发布时间】:2020-02-29 14:37:10
【问题描述】:

我想在 ref(likers) 中搜索特定用户,然后将其删除,但它不会在这里工作,并且当我提醒 (this.liker) 而不是 ref(user) 中的用户键时它会提醒“likers” )

这是数据库

这是代码

firebase.database().ref('posts/-M13xC_yeIsj342A75pz/likers')
            .orderByChild('user')
            .equalTo('fHI1izTOJ5VeC7ZnjXUducickzj1'/* 'PCrBx38NcjZdsgmRS805sk7lgWn1' firebase.auth().currentUser || {}).uid */)
            .on('value', snap => {
               this.liker =  snap.key
               alert(this.liker)
            })
            firebase.database().ref('posts').child(this.props.postKey/*'-M0IviCqMGE_PxoqNd0W'*/).child('likers').child(key).remove()

【问题讨论】:

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


    【解决方案1】:

    当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。

    您的代码需要通过遍历您获得的快照的子节点来处理这一事实。

    firebase.database().ref('posts/-M13xC_yeIsj342A75pz/likers')
            .orderByChild('user')
            .equalTo('fHI1izTOJ5VeC7ZnjXUducickzj1'/* 'PCrBx38NcjZdsgmRS805sk7lgWn1' firebase.auth().currentUser || {}).uid */)
            .once('value', results => {
               results.forEach((snapshot) => {
                   alert(snapshot.key)
               });
            })
    

    在上面,我还将代码更改为使用once 而不是on。这不会对查询结果产生任何影响,但意味着它在获得查询结果后停止侦听。

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2020-09-18
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      相关资源
      最近更新 更多