use node.extend module to deep-copy schema.userSchema when creating

new users - was a bug that duplicated initial tasks for each new user
This commit is contained in:
Tyler Renelle 2012-08-02 22:51:39 -04:00
parent 0a72028c27
commit 364641740a
3 changed files with 8 additions and 5 deletions

View file

@ -26,7 +26,7 @@ get('/:uidParam?', function(page, model, _arg) {
return model.subscribe("users." + userId, function(err, user) {
var guid, newUser, task, _i, _len, _ref1;
if (!user.get('id')) {
newUser = schema.userSchema;
newUser = require('node.extend')(true, {}, schema.userSchema);
_ref1 = content.defaultTasks;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
task = _ref1[_i];

View file

@ -1,7 +1,7 @@
{
"name": "habitrpg",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "0.0.0-95",
"version": "0.0.0-101",
"main": "./server.js",
"dependencies": {
"derby": "git://github.com/codeparty/derby#master",
@ -10,7 +10,8 @@
"racer-db-mongo": "0.3.11",
"connect-mongo": ">=0.1.9",
"derby-ui-boot": "*",
"guid": "*"
"guid": "*",
"node.extend": "*"
},
"private": true,
"devDependencies": {

View file

@ -9,12 +9,13 @@ scoring = require('./scoring')
schema = require('./schema')
helpers = require('./helpers')
helpers.viewHelpers(view)
# $ = require('jQuery')
# _ = require('underscore')
# ========== ROUTES ==========
get '/:uidParam?', (page, model, {uidParam}) ->
# Current browser session
# The session middleware will assign a _userId automatically
userId = model.get '_userId'
@ -22,7 +23,8 @@ get '/:uidParam?', (page, model, {uidParam}) ->
# Create new user if none exists
unless user.get('id')
newUser = schema.userSchema
# deep clone, else further new users get duplicate objects
newUser = require('node.extend')(true, {}, schema.userSchema)
for task in content.defaultTasks
guid = task.id = require('derby/node_modules/racer').uuid()
newUser.tasks[guid] = task