gpt4 book ai didi

javascript - 刷新浏览器会覆盖 Firebase 中 child 的内容

转载 作者:行者123 更新时间:2023-11-30 14:35:41 25 4
gpt4 key购买 nike

我是数据库领域的初学者。我正在尝试使用 Firebase 数据库,这是我遇到的问题:我想创建一个简单的注册,用户应该在其中写入信息,并且该信息应该存储在实时数据库中。也就是说,当用户输入他的信息并点击“注册”时,应该创建用户 1,然后用户 2 输入他的信息并创建用户 2,但他们都必须是同一级别的“ child ”。一切似乎都运行良好,我创建了一个对象(在 Javascript 中),然后我将其作为名为“用户 1”的“子对象”添加到数据库中,但是当我刷新页面并为用户 2 输入其他信息时,此信息覆盖了用户1 的信息,但是当我只是从浏览器的输入字段中删除用户 1 的信息(不进行刷新)并输入用户 2 的信息时,它会创建第二个名为用户 2 的“ child ”,这就是我想要的成为。问题是为什么刷新浏览器会覆盖以前的信息。这是我的 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 会重新加载并从头开始执行。它不记得您重新加载之前发生的事情。

这意味着这一行再次执行:

var 用户编号 = 0;

因此 user_number 再次从 0 开始计数。

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

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

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

关于javascript - 刷新浏览器会覆盖 Firebase 中 child 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50459166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com