Firebase извлекает неверную информацию из базы данных - PullRequest
0 голосов
/ 04 февраля 2019

Я считаю свою базу данных достаточно хорошо вложенной.И для каждых данных, которые я сохранил, используя текущий пользовательский uid, я помещаю их в базу данных, где создается уникальный pushid, поэтому, когда я хочу получить данные, он всегда просто получает данные, которые не из уникального pushid, ноПользовательский UID правильный.Как получить правильные данные из правильного pushid?

Моя база данных, в которую я хочу сохранить информацию: https://imgur.com/a/tird0jD

Моя база данных, в которую я извлекаю информацию, которую я хочу сохранить вдругой узел базы данных: https://imgur.com/a/50f1M8W

Как вы видите на рисунке базы данных, uid и pushid извлекаются правильно, но данные внутри извлекаются неправильно, и когда я пытаюсь для всех, кажется,возвращать все те же данные.

Ниже приведен мой JS-код:

function choose() {

  assign(document.getElementById("updateUserID").value, document.getElementById("updateID").value,
    document.getElementById("person").value);

}

var rootRef2 = firebase.database().ref('Admin/Person In Charge/Towing');
select = document.getElementById('person');
var opt1 = document.createElement('Option');
opt1.value = "-Select-";
opt1.innerHTML = "-Select-";
select.appendChild(opt1);

//Retrieve P-I-C data from Firebase
rootRef2.on("child_added", function (pericRecord) {
  var opt = document.createElement('Option');
  opt.value = pericRecord.val().Name;
  opt.innerHTML = pericRecord.val().Name;
  select.appendChild(opt);
});





function showModal(userId, pushId) {
  $('#modal').modal("show");
  document.getElementById("updateID").value = pushId;
  document.getElementById("updateUserID").value = userId;

}

function assign(userId, pushId, x) {

  var person = x;
  var rootRef3 = firebase.database().ref('Users/Towing Request/'  + userId)

  rootRef3.on('child_added', function (snapshot) {
    document.getElementById("updateID").value = pushId;
    document.getElementById("updateUserID").value = userId;

    firebase.database().ref('Admin/AssignCarTowing/' + person +"/"+userId +"/"+pushId)
      .update({
        CustUID: userId,
        CustName: snapshot.val().Name,
        CustCarModel: snapshot.val().CarModel,
        CustCarNumber: snapshot.val().CarNumber,
        CustContactNo: snapshot.val().ContactNo,
        CustLocation: snapshot.val().BreakdownLocation,
        CustBDTD: snapshot.val().TowingDateandTime
      })

  });


  firebase.database().ref('/Users/Towing Request/' + userId + "/" + pushId)
    .update({ PersonInCharge: person, Status: "Assigned" });
  window.alert("Updated to Assigned with Person In Charge");


  firebase.database().ref('/Users/Towing Request/' + userId + "/" + pushId).once('value').then(function (snapshot) {

    //document.getElementById('name').value = snapshot.val().Name;
    //document.getElementById('email').value = snapshot.val().Email;
    //document.getElementById('peric').value = snapshot.val().PersonInCharge;
    //document.getElementById('status').value = snapshot.val().Status;

    window.alert("Retrieved");
    location.reload();

  });
}

Мой HTML-код, в котором я выбираю, в кого сохранять:

<div class="modal fade" id="modal" role="dialog">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal">&times;</button>
                                <h4 class="modal-title">Choose Person In Charge</h4>
                            </div>
                            <div class="modal-body">
                                <input type="text" id="updateID" />
                                <input type="text" id="updateUserID" />


                                <select id="person" onchange=choose()>

                                </select>
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            </div>
                        </div>
                    </div>
                </div>

Я пробовал все возможные ответы из всех поисковЯ получил, но все равно не повезло.

1 Ответ

0 голосов
/ 09 февраля 2019

Мне удается решить это самостоятельно методом проб и ошибок в коде.Ниже приведен код, который поможет мне решить эту проблему.

function assign(userId, pushId, person) {


  var rootRef3 = firebase.database().ref('Users/Towing Request/' + userId);

  rootRef3.on('value', function (snapshot) {
    console.log(snapshot.key)

    firebase.database().ref('Admin/AssignCarTowing/' + person + "/" + userId + "/" + pushId)
      .set({
        CustUID: userId,
        CustName: snapshot.child(pushId).val().Name,
        CustCarModel: snapshot.child(pushId).val().CarModel,
        CustCarNumber: snapshot.child(pushId).val().CarNumber,
        CustContactNo: snapshot.child(pushId).val().ContactNo,
        CustLocation: snapshot.child(pushId).val().BreakdownLocation,
        CustBDTD: snapshot.child(pushId).val().TowingDateandTime



      })


  });


  firebase.database().ref('/Users/Towing Request/' + userId + "/" + pushId)
    .update({ PersonInCharge: person, Status: "Assigned" });
  window.alert("Updated to Assigned with Person In Charge");


  //firebase.database().ref('/Users/Towing Request/' + userId + "/" + pushId).once('value').then(function (snapshot) {

  //document.getElementById('name').value = snapshot.val().Name;
  //document.getElementById('email').value = snapshot.val().Email;
  //document.getElementById('peric').value = snapshot.val().PersonInCharge;
  //document.getElementById('status').value = snapshot.val().Status;

  //window.alert("Retrieved");
  location.reload();

  //});
}

Изменена только функция Assign.

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