刷新浏览器会覆盖 Firebase 中孩子的内容



我是数据库世界的初学者。我正在尝试使用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只是输入字段和一个名为"注册"的按钮

当您重新加载页面时,JavaScript 会重新加载并从头开始再次执行。它不记得在你重新加载它之前发生了什么。

这意味着此行将再次执行:

变量 user_number = 0;

因此,user_number又开始从0开始计数。

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

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

这会在根目录下生成一个新的唯一 ID,用于设置用户。虽然这些所谓的推送 ID 不像您的数字那样容易读取,但它们保证在重新加载、多个用户甚至离线/在线条件下都是唯一的。

最新更新