我是数据库领域的一个完整的初学者。我正在尝试使用Firebase数据库,这是我遇到的问题:我想创建一个简单的注册,用户应在其中编写信息,并将此信息存储在实时数据库中。也就是说,当用户输入他的信息并单击“注册”时,应创建用户1,然后用户2输入他的信息,并应创建用户2,但是所有用户都必须是同一级别的“孩子”。一切似乎都工作正常,我创建了一个对象(使用Javascript),然后以名为“用户1”的“孩子”的身份添加到数据库中,但是当我刷新页面并为用户2输入其他信息时,此信息覆盖了用户1的信息,但是当我只是从浏览器的输入字段中删除用户1的信息(不刷新)并输入用户2的信息时,它会创建第二个名为用户2​​的“孩子”,这正是我想要的成为。问题是为什么刷新浏览器会覆盖以前的信息。这是我的js代码:

function submitClick(x){
    var firebaseRef = firebase.database().ref();
    user_number ++;
    firebaseRef.child("user" + " " + user_number).set(x);
}

function signup(){
    var first_name = document.getElementById("first_name").value;
    var last_name = document.getElementById("last_name").value;
    var username = document.getElementById("user_name").value;
    var password = document.getElementById("password").value;
    var obj = {
        First_Name: first_name,
        Last_Name: last_name,
        Username: username,
        Password: password
    }
    return obj;
}

var hold;
var user_number = 0;
submit_btn.onclick = function() {hold = signup(); submitClick(hold)};


而html只是输入字段和一个名为“ sign up”的按钮

最佳答案

重新加载页面时,JavaScript将重新加载并从头开始执行。它不存储您重新加载之前发生的情况。

这意味着该行再次执行:

var user_number = 0;

因此user_number0重新开始计数。

解决此问题的最简单方法是使用Firebase的push()方法:

function submitClick(x){
    var firebaseRef = firebase.database().ref();
    firebaseRef.push().set(x);
}


这会在根目录下生成一个新的唯一ID,并在其中设置用户。尽管这些所谓的推送ID不像您的号码那样容易阅读,但可以保证它们在重新加载,多个用户甚至离线/在线条件下都是唯一的。

07-24 09:45
查看更多