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')
...