JSFiddle - React, Tailwind, and code Playground

by WilsonPage

JavaScript

/**
 *     UpdateUserDetail
 *
 *    Used to upgrade models that currently have avatar: false
 *        1. Users
 *        2. Feeditem.user
 *        3. Mesh.members[i].user
 *
 */
var updateUserDetail = (function(){
    var User,
        changes;
        

    var updateUser = function(cb){

        // get the user out of the DB
        fn.getUser({_id: User._id}, function(err, User){
            
            // update properties that are in the changes object
            for(var prop in changes){ User[prop] = changes[prop] };
            
            // save the changes and run callback
            User.save(function(err){
                if(err){ next(err) };
                
                // send the updated user model back
                cb(User);// <<== Callback
            });
        });
    }
        
    
    var updateMeshMembers = function(cb){
        var memberships = User.memberships,
            len = memberships.length;
    
    
        fn.getUserMeshes(memberships, function(err, Meshes){
            
            // loop over each mesh
            Meshes.forEach(function(Mesh, i){
    
                // update each property in changes object
                for(var prop in changes){
                    Mesh.members.id(memberships[i]._id).user[prop] = changes[prop];
                }
    
                //save the mesh
                Mesh.save(function(err){
                    
                    // if this was the last loop: run callback
                    if(i == len-1){ cb() };// <<== Callback
                });
            });
        });
    };



    var updateFeeditems = function(cb){
        var mongoSet = {};// empty object
        
        // loop over each change and put it in the mongoSet object with 'user.'
        // prepended so that it'll work with the mongo update query.
        for(var prop in changes){ mongoSet['user.' + prop] = changes[prop] };
        
        // run the update query
        DB.model('feeditems')
  ...