首页 > 解决方案 > 当firebase查询与数据库中的任何内容都不匹配时如何调用函数

问题描述

我正在尝试为一个反应原生项目实现一个朋友添加系统。我正在使用 firebase 实时数据库。问题是当我使用 'equalTo()' 函数进行查询时,如果数据库中没有匹配的数据,我没有得到结果,也无法调用函数来说明没有具有此用户名的用户. 我想做的就是能够说没有找到使用该用户名的用户。

我使用“child_added”事件类型来获取与搜索到的用户名匹配的用户的用户 ID,但如果没有匹配的用户名,我的回调函数永远不会被调用。如果我使用 'value' 事件类型,则 snapshot.key 返回字符串 'users' 并且 snapshot.val() 没有匹配用户的用户 ID(如果有的话)。

这是当前数据库:

"users": {
    "uid1": {
        "user_details": {
            "username": "username1"
       }
    },
    "uid2": {
        "user_details": {
            "username": "username2"
       }
    }
}

这是代码:

firebase.database().ref('users')
    .orderByChild('user_details/username')
    .equalTo(username)
    .once('child_added', snapshot => {
        console.log('User found');
    })
    .then(() => {
        console.log('No users found')
    });

用户名通过函数调用传递。

如果查询找不到等于用户名的结果,则永远不会执行 one() 或至少永远不会执行其第二个参数,那么也永远不会执行 then()。

我没有收到任何错误。

标签: javascriptfirebasereact-nativefirebase-realtime-database

解决方案


更改'child_added''value'查询一次,有关更好的解释,请参阅@Frank 的答案


推荐阅读