Skip to content

Instantly share code, notes, and snippets.

@tarlepp
Forked from anonymous/gist:b8cc664fa1b53578a4f4
Last active August 29, 2015 14:07
Show Gist options
  • Save tarlepp/79845632bb3cb4d7223d to your computer and use it in GitHub Desktop.
Save tarlepp/79845632bb3cb4d7223d to your computer and use it in GitHub Desktop.
// Folder.js has folders object and files object
// Here we need to load a Folder's files and update some permission, until there is no folder anymore
function shareFolderRecursively(folderId, permission, next) {
var processFiles = function(files, next) {
async.each(
files,
function(file, callback) {
file.permission = permission;
file.save(callback)
},
next
);
};
var processFolders = function(folders, next) {
async.each(
folders,
function(folder, callback){
shareFolderRecursively(folder.id, permission, callback);
},
next
);
};
var folderHandler = function(error, folder) {
if (error) {
return next(error);
}
async.parallel(
[
function (callback) {
processFiles(folder.files, callback);
},
function (callback) {
processFolders(folder.files, callback);
}
],
function (error, results) {
if (error) {
sails.log.error('Error occurred while processing files / folders!');
sails.log.error(error);
}
next(error);
}
);
};
sails.models['folders']
.findOne(folderId)
.populate('files')
.populate('folders')
.exec(folderHandler);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment