jorandradefig icon

Untitled

jorandradefig | PRO | 07/26/17 11:52:19 PM UTC | 0 ⭐ | 551 👁️ | Never ⏰ | []
JavaScript |

3.4 KB

|

None

|

0 👍

/

0 👎

`Para cada "lost user":`
lostUsers.forEach(function(user){
  `Buscas su home (que fue alterado)` *Aquí tengo duda si "user" es el id o es el objeto del usuario*
  var currentHome = db.home.findOne({userId:user});
  `Buscas su home en el backup`
  var backedUpHome = db.homeBackup.findOne({userId:user});
  `Buscas el mismo home del backup pero lo guardas en otra segunda variable`
  var restoredHome = db.homeBackup.findOne({userId:user});
  `Si el home con "userId" no existe:` 
  if(currentHome == null){
    print("not found");
    //No se registro, just update
    //Find in backup
    //db.home.update({userId:{$exists:false}},tojson(restoredHome))     //UNCOMMENT
    `Reemplazas el home inexistente por el home restaurado`
    db.home.save(restoredHome);
  `Si el home con "userId" existe:`
  }else{
    print('found');
    //Usuario se registro de nuevo (merge)
    `Reemplazas todos estos campos por los del home restaurado`
    var merge = {
      $set : {
        signUpDate    : restoredHome.signUpDate,
        teamName      : restoredHome.teamName,
        fanOf         : restoredHome.fanOf,
        createdAt     : restoredHome.createdAt,
        knockout      : restoredHome.knockout,
        lineUpHistory : restoredHome.lineUpHistory,
        points        : restoredHome.points,
        rankings      : restoredHome.rankings,
        isRegistred   : restoredHome.isRegistred,
        roundUpdates  : restoredHome.roundUpdates,
        myAdminGroups : restoredHome.myAdminGroups
      }
    };
 
    //Merge groups
    `Si hay grupos en el home existente:`
    if(currentHome.groups.length > 0){    // necessary??
 
      currentHome.groups.forEach(function(group){
        var found = false;
        restoredHome.groups.forEach(function(groupBackup){
          if(String(group.groupId) == String(groupBackup.groupId)){
            //print('group ' + group + " found");
            found = true;
          }
        });
        if(!found){
          //print('group ' + group + " not found");
          restoredHome.groups.push(group);
        }
      });
    }
 
   `Reemplazas los grupos del home existente por los grupos del home restaurado más los que añadiste`
    merge.$set.groups = restoredHome.groups;
 
    //Merge groups g18
    if(currentHome.groupsG18.length > 0){    // necessary??
 
      currentHome.groupsG18.forEach(function(group){
        var found = false;
        restoredHome.groupsG18.forEach(function(groupBackup){
          if(String(group.groupId) == String(groupBackup.groupId)){
            found = true;
          }
        });
        if(!found){
          restoredHome.groupsG18.push(group);
        }
      });
    }
 
   `Reemplazas los grupos g18 del home existente por los grupos del home restaurado más los que añadiste`
    merge.$set.groupsG18 = restoredHome.groupsG18;
    //print(tojson(merge.$set.groups));
    `Haces el update del home existente` *Aquí no falta { multi: true } ?*
    db.home.update({userId:user}, merge)          //UNCOMMENT
  }
 
  //Save process
  `Buscas nuevamente el home con "userId"`
  var finalHome = db.home.findOne({userId:user});
  `Y en el collection "mergeResult" guardas los tres homes, el alterado, el del backup y el restaurado junto con el "userId"`
  db.mergeResult.insert({
    "userId"    : user,
    "backedup"  : backedUpHome,
    "messedUp"  : currentHome,
    "merged"    : finalHome
  })
})

Comments