После перемещения узла из prevRef в newRef, как мне обновить определенные данные в Firebase? - PullRequest
0 голосов
/ 28 ноября 2018

Я использую приведенный ниже код для копирования определенных данных из узла ('Pending') в узел ('Approved').Он только копирует узел, включающий username и request_status данных.Как я могу обновить request_status внутри идентификатора пользователя после копирования?

var oldRef = firebase.database().ref().child('Request').child('Pending');
var newRef = firebase.database().ref().child('Request').child('Approved');

function moveFbRecord(oldRef, newRef) {    
 oldRef.once('value', function(snap)  {
      newRef.update( snap.val(), function(error) {

           if( !error ) {  oldRef.remove();}
           else if( typeof(console) !== 'undefined' && console.error ) {  console.error(error); }
      });
 });    
newRef.limitTolast(1).update({ snap.val().request_status: "Approved" });<<< I tried inserting this code but I think it messes up every code in my .js file
}

Где поместить строку обновления кода?

newRef.limitTolast(1).update({ snap.val().request_status: "Approved" });

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы обновить статус в новом узле:

oldRef.once('value', function(snap)  {
  var data = snap.val();
  data.request_status = "Approved";
  newRef.update(data, function(error) {
       if( !error ) {  oldRef.remove(); }
       else if( typeof(console) !== 'undefined' && console.error ) {  console.error(error); }
  });
}); 

Вы даже можете объединить удаление старого узла и запись нового в одном обновлении с несколькими местоположениями.Ключом к этому является то, что вы даете полный путь ко всем данным, которые вы хотите обновить Firebase:

oldRef.once('value', function(snap)  {
  var data = snap.val();
  data.request_status = "Approved";
  var updates = {};
  updates["Request/Approved/"+snap.key] = data
  updates["Request/Pending/"+snap.key] = null;
  firebase.database().ref().update(updates);
}); 

Важным преимуществом этого подхода является то, что либо все эти обновления выполняются успешно, либо ни одно из них не выполняется.Так что в старом месте нет никаких шансов получить данные.

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