javascript - 当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()。
我没有收到任何错误。
解决方案
更改'child_added'
为'value'
查询一次,有关更好的解释,请参阅@Frank 的答案
推荐阅读
- c - ncurses 不断提供 SIGSEGV
- git - 从 Databricks Notebook 运行 git 命令
- jenkins - groovy 脚本没有获取 aws 图像列表,可能是什么问题?
- python - aws lambda api 网关中的 Web 套接字处理大量数据
- c++ - 如何修复 C++ 错误:在抛出“std::bad_alloc”实例后调用终止。什么():std::bad_alloc
- docker - 来自守护进程的错误响应:hcsshim::CreateComputeSystem: The request is not supported
- angular - Angular 11.1.2 之后的路由器延迟加载问题
- mqtt - 尝试调试从 NodeRed 项目发送到 myqtthub 的请求
- vue.js - 从 localhost 访问 Magento 2.3.6 REST API - 被 CORS 策略阻止
- dataframe - 根据条件对同一列中的值求和