при обновлении браузера перезаписывает содержимое ребенка в Firebase - PullRequest
0 голосов
/ 22 мая 2018

Я полный новичок в мире баз данных.Я пытаюсь использовать базу данных 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 - это просто поля ввода и кнопка с именем "зарегистрироваться"

1 Ответ

0 голосов
/ 22 мая 2018

Когда вы перезагружаете свою страницу, JavaScript перезагружается и выполняется заново с нуля.У него нет памяти о том, что произошло до того, как вы его перезагрузили.

Это означает, что эта строка снова выполняется:

var user_number = 0;

И, таким образом, user_number начинает считатьот 0 еще раз.

Самый простой способ решить эту проблему - использовать метод push() Firebase:

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

Это генерирует новый уникальный идентификатор под корнем, где он устанавливаетПользователь.Хотя эти так называемые push-идентификаторы не так легко читаются, как ваши номера, они гарантированно будут уникальными для перезагрузок, нескольких пользователей и даже в режиме офлайн / онлайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...