From fac99c7f7f93b3d6203a354d0b0cf44b1ca677d4 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 22 Nov 2013 16:21:53 -0700 Subject: [PATCH] [#1862] re-migrat users with items.pets, items.hatchingPotions, or items.eggs which are arrays, not objects. This shouldn't be happening still, need to investigate --- migrations/20131109_refactor_pets.js | 41 ++++++++++++++++------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/migrations/20131109_refactor_pets.js b/migrations/20131109_refactor_pets.js index 1e85ff8fb2..f5d9f7d567 100644 --- a/migrations/20131109_refactor_pets.js +++ b/migrations/20131109_refactor_pets.js @@ -1,31 +1,36 @@ -db.users.find({},{backer: 1, items:1}).forEach(function(user){ - user.items = { - armor: +user.items.armor || 0, - weapon: +user.items.weapon || 0, - head: +user.items.head || 0, - shield: +user.items.shield || 0, +db.users.find( + {$where: "Array.isArray(this.items.pets) || Array.isArray(this.items.eggs) || Array.isArray(this.items.hatchingPotions)"}, + {backer: 1, items:1} +).forEach(function(user){ - pets: _.reduce(user.items.pets, function(m,v){ m[v] = 5; return m;}, {}), - currentPet: user.items.currentPet ? user.items.currentPet.str : '', - eggs: _.reduce(user.items.eggs, function(m,v){ + if (_.isArray(user.items.pets)) { + user.items.pets = _.reduce(user.items.pets, function(m,v){ m[v] = 5; return m;}, {}); + } + + if (!_.isString(user.items.currentPet)) { + user.items.currentPet = user.items.currentPet ? user.items.currentPet.str : ''; + } + + if (_.isArray(user.items.eggs)) { + user.items.eggs = _.reduce(user.items.eggs, function(m,v){ if (!m[v.name]) m[v.name] = 0; m[v.name]++; return m; - }, {}), + }, {}); + } - hatchingPotions: _.reduce(user.items.hatchingPotions, function(m,v){ + if (_.isArray(user.items.hatchingPotions)) { + user.items.hatchingPotions = _.reduce(user.items.hatchingPotions, function(m,v){ if (!m[v]) m[v] = 0; m[v]++; return m; - }, {}), + }, {}); + } - food: {}, + user.items.food = {}; + user.items.mounts = {}; + user.items.currentMount = ''; - mounts: {}, - currentMount: '', - - lastDrop: user.items.lastDrop || {date: new Date(), count: 0} - }; if (user.backer && user.backer.tier && user.backer.tier >= 90) { user.items.mounts['LionCub-Ethereal'] = true; }