javascript - 在 Firebase RTD 中访问子节点属性
问题描述
我有 .js 文件,我在其中循环通过 Firebase 实时数据库来查找注册用户的电子邮件和密码,这些注册用户存储在数据库的 /users 树下,其中每个孩子都是随机生成的具有用户信息的唯一 ID。我从表单元素中获取电子邮件和密码信息。问题是当电子邮件和密码不相等时,不会执行 checkMessage 中的警报消息。应显示警报消息,但仅刷新页面。
Database:
----/Users
--------/XJIGFDMDKGD
-------------email: "a@b.com"
-------------password: "12345"
--------/XJFGNRIENGJ
-------------email: "c@d.com"
-------------password: "67890"
我的代码:
document
.getElementById('loginForm')
.addEventListener('submit', formSubmit);
function formSubmit(e) {
e.preventDefault();
document.querySelector('.alert').style.display = 'block';
// Get Values from the DOM
let email = document.querySelector('#email').value;
let password = document.querySelector('#password').value;
//check message values
checkMessage(email, password);
//Form Reset After Submission
//document.getElementById('loginForm').reset();
}
检查消息功能:
function checkMessage(email, password) {
var usrs = firebase.database().ref('users');
usrs.on("child_added", function(snapshot) {
var user = snapshot.val();
if (user.email == email) {
if (user.password == password) {
} else {
}
} else {
document.querySelector('.alert2').style.display = 'block';
setTimeout(function() {
document.querySelector('.alert2').style.display = 'none';
}, 7000);
document.getElementById('loginForm').reset();
}
);
}
解决方案
该错误是由语法问题、下一段代码末尾的一个额外大括号以及放错位置的括号引起的。固定解决方案:
var users = firebase.database().ref('users');
users.on("child_added", function(snapshot) {
var user = snapshot.val();
if (email == user.email) {
if (password == user.password) {
}
} else {
};
});
推荐阅读
- javascript - 基于表单字段数据的上传目录厉害吗?
- .net - .NET 框架 4.8 的传输层安全性 (TLS 1.3)
- scala - 为什么 cp 命令在不注意添加 -e 选项的情况下会出错?
- shopify - 太多/无限循环问题 - Shopify
- json - 如何使用 Swift 5 从 URL 解析 JSON 数据并附加到 UiLabel
- java - 带有 Libvirt c 代码的 JNA。我做错了什么?
- azure - Azure 中的故障域和更新域
- html - 如何将图像放置在不同图像旁边的文本下?
- python - 为什么 torch.FloatTensor([[[0,1,2],[3,4,5]],[[6,7,8],[9,10,11]]]) 的大小是 [2,2, 3]?
- amazon-web-services - 将 S3 文件存档到 Glacier