Guest User

Untitled

a guest
Oct 19th, 2014
223
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. router.post('/', function(req, res) {
  2.     console.log('Creating a new list');
  3.  
  4.     try {
  5.         var list = JSON.parse(req.body.list);
  6.     } catch (e) {
  7.         console.error(e);
  8.         res.status(400).send('Could not parse request data');
  9.         return;
  10.     }
  11.  
  12.     console.log('list', list);
  13.  
  14.     if (!list.name || list.name === '') {
  15.         console.error('Name missing or empty');
  16.         res.status(400).send('Name missing or empty');
  17.         return;
  18.     }
  19.  
  20.     if (!list.users || list.users.length < 1) {
  21.         console.error('Users missing or empty');
  22.         res.status(400).send('Users missing or empty');
  23.         return;
  24.     }
  25.  
  26.     if (!list.tasks) {
  27.         console.error('Tasks missing');
  28.         res.status(400).send('Tasks missing');
  29.         return;
  30.     }
  31.  
  32.     var db = req.db;
  33.     var lists = db.get('lists');
  34.  
  35.     // Write list
  36.     var writtenList;
  37.     lists.insert(list, function(err, doc) {
  38.         if (err) {
  39.             console.log(err);
  40.             res.status(500).send('DB write failed');
  41.         } else {
  42.             console.log('Inserted list', doc);
  43.             writtenList = doc;
  44.             var users = db.get('users');
  45.             writtenList.users.forEach(function(v, i) {
  46.                 console.log('Getting current lists for user', v);
  47.                 var userLists;
  48.                 users.find({_id: v}, function(err, docs) {
  49.                     if (err) {
  50.                         console.log(err);
  51.                         res.status(500).send('DB read failed');
  52.                     } else {
  53.                         console.log('Found docs', docs);
  54.                         if (docs.length !== 1) {
  55.                             console.error('Found too many or no users');
  56.                             res.status(400).send('Error while fetching user');
  57.                         } else {
  58.                             userLists = docs[0].lists;
  59.                             console.log('Old list array', userLists);
  60.                             console.log('Adding new list to user', v);
  61.                             userLists.push(writtenList._id);
  62.                             console.log('New list array', userLists);
  63.                             users.update({_id: v}, { $set: { 'lists': userLists } }, function(err, docs) {
  64.                                 if (err) {
  65.                                     console.error('User update failed');
  66.                                     res.status(500).send('User update failed');
  67.                                 } else {
  68.                                     console.log('Updated', docs);
  69.                                     res.jsonp(writtenList);
  70.                                 }
  71.                             });
  72.                         }
  73.                     }
  74.                 });
  75.             });
  76.         }
  77.     });
  78.  
  79. });
RAW Paste Data