【问题标题】:Checking a child's entries for a match检查孩子的条目是否匹配
【发布时间】:2018-07-08 21:55:55
【问题描述】:
let ref = firebase.database().ref('players').child(playerId).child('voters');
ref.child(uid).once('value', snap => {
    var key = snap.key;
    console.log("snapkey: " + key + " uid: " + uid)
    if (key === uid) {
        console.log("Exists")
    } else {
        console.log("Doesn't exist")
    }
});

我正在尝试查看我的数据库的 voters 中是否存在一个变量 uid,它保存来自 firebase-auth 的用户唯一 ID

所以对我来说,当我使用该应用程序时,我的 uid 是 vKl6rIUuI0WsbeWVORz3twPUfnd2。所以如果我去投票给这个 Firstname Lastname 人,它应该告诉我我存在于上图的场景中。

问题是,它似乎总是说它存在。 key 和 uid 的 console.log 都显示了我的 uid。是ref.child(uid)... 的问题吗?

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    使用.exists()方法:

    let ref = firebase.database().ref('players').child(playerId).child('voters');
    ref.child(uid).once('value', (snap) => {
        console.log(snap.exists());    // This will print true or false
    });
    

    【讨论】:

      【解决方案2】:

      快照将总是有一个键。总是。它将位于您通过引用请求的位置。该键后面是否有数据与快照总是有一个键这一事实无关。

      您需要做的是检查该密钥背后的数据。它是空的吗?然后那里没有数据。一个号码?那是数据,它是存在的。

      【讨论】:

        【解决方案3】:
        let ref = firebase.database().ref('/players/' + playerID + '/voters');
        
        ref.once('value', snap => {
            var value = snap.val()
            console.log(value)
            if (value !== null) {
                console.log("Exists")
            } else {
                console.log("Doesn't exist")
            }
        });
        

        https://firebase.google.com/docs/database/web/read-and-write#read_data_once

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-19
          • 2017-10-24
          • 1970-01-01
          • 2018-08-07
          • 2016-09-18
          • 1970-01-01
          • 2014-03-05
          • 1970-01-01
          相关资源
          最近更新 更多