Advertisement
jorandradefig

Untitled

Jul 26th, 2017
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `Para cada "lost user":`
  2. lostUsers.forEach(function(user){
  3.   `Buscas su home (que fue alterado)` *Aquí tengo duda si "user" es el id o es el objeto del usuario*
  4.   var currentHome = db.home.findOne({userId:user});
  5.   `Buscas su home en el backup`
  6.   var backedUpHome = db.homeBackup.findOne({userId:user});
  7.   `Buscas el mismo home del backup pero lo guardas en otra segunda variable`
  8.   var restoredHome = db.homeBackup.findOne({userId:user});
  9.   `Si el home con "userId" no existe:`
  10.   if(currentHome == null){
  11.     print("not found");
  12.     //No se registro, just update
  13.     //Find in backup
  14.     //db.home.update({userId:{$exists:false}},tojson(restoredHome))     //UNCOMMENT
  15.     `Reemplazas el home inexistente por el home restaurado`
  16.     db.home.save(restoredHome);
  17.   `Si el home con "userId" existe:`
  18.   }else{
  19.     print('found');
  20.     //Usuario se registro de nuevo (merge)
  21.     `Reemplazas todos estos campos por los del home restaurado`
  22.     var merge = {
  23.       $set : {
  24.         signUpDate    : restoredHome.signUpDate,
  25.         teamName      : restoredHome.teamName,
  26.         fanOf         : restoredHome.fanOf,
  27.         createdAt     : restoredHome.createdAt,
  28.         knockout      : restoredHome.knockout,
  29.         lineUpHistory : restoredHome.lineUpHistory,
  30.         points        : restoredHome.points,
  31.         rankings      : restoredHome.rankings,
  32.         isRegistred   : restoredHome.isRegistred,
  33.         roundUpdates  : restoredHome.roundUpdates,
  34.         myAdminGroups : restoredHome.myAdminGroups
  35.       }
  36.     };
  37.  
  38.     //Merge groups
  39.     `Si hay grupos en el home existente:`
  40.     if(currentHome.groups.length > 0){    // necessary??
  41.  
  42.       currentHome.groups.forEach(function(group){
  43.         var found = false;
  44.         restoredHome.groups.forEach(function(groupBackup){
  45.           if(String(group.groupId) == String(groupBackup.groupId)){
  46.             //print('group ' + group + " found");
  47.             found = true;
  48.           }
  49.         });
  50.         if(!found){
  51.           //print('group ' + group + " not found");
  52.           restoredHome.groups.push(group);
  53.         }
  54.       });
  55.     }
  56.  
  57.    `Reemplazas los grupos del home existente por los grupos del home restaurado más los que añadiste`
  58.     merge.$set.groups = restoredHome.groups;
  59.  
  60.     //Merge groups g18
  61.     if(currentHome.groupsG18.length > 0){    // necessary??
  62.  
  63.       currentHome.groupsG18.forEach(function(group){
  64.         var found = false;
  65.         restoredHome.groupsG18.forEach(function(groupBackup){
  66.           if(String(group.groupId) == String(groupBackup.groupId)){
  67.             found = true;
  68.           }
  69.         });
  70.         if(!found){
  71.           restoredHome.groupsG18.push(group);
  72.         }
  73.       });
  74.     }
  75.  
  76.    `Reemplazas los grupos g18 del home existente por los grupos del home restaurado más los que añadiste`
  77.     merge.$set.groupsG18 = restoredHome.groupsG18;
  78.     //print(tojson(merge.$set.groups));
  79.     `Haces el update del home existente` *Aquí no falta { multi: true } ?*
  80.     db.home.update({userId:user}, merge)          //UNCOMMENT
  81.   }
  82.  
  83.   //Save process
  84.   `Buscas nuevamente el home con "userId"`
  85.   var finalHome = db.home.findOne({userId:user});
  86.   `Y en el collection "mergeResult" guardas los tres homes, el alterado, el del backup y el restaurado junto con el "userId"`
  87.   db.mergeResult.insert({
  88.     "userId"    : user,
  89.     "backedup"  : backedUpHome,
  90.     "messedUp"  : currentHome,
  91.     "merged"    : finalHome
  92.   })
  93. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement