Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var CourseSchema = new mongoose.Schema({
- name: { type: String, required: true },
- code: { type: String, required: true, unique: 1, uppercase: 1 },
- files: [{ type: mongoose.Schema.Types.ObjectId, ref: 'File' }]
- // more fields
- });
- var FileSchema = new mongoose.Schema({
- name: { type: String, required: true }
- // more fields
- });
- var fs = require('fs');
- var async = require('async'),
- mongoose = require('mongoose');
- exports.deleteFiles = function (req, res) {
- // loop through selected file-ids
- async.eachSeries(req.body.files, function (id, done) {
- // remove file from File collection
- models.File.findByIdAndRemove(id, function (err, file) {
- if (err) {
- return done(err);
- } else if (!file) {
- return done();
- }
- var path = __dirname + '/../public/upl/' + req.course.id + '/' + file.name;
- // remove file reference from Course document
- req.course.files.pull(mongoose.Types.ObjectId(id));
- req.course.save(function (err) {
- if (err) {
- return done(err);
- }
- // remove file from filesystem
- fs.stat(path, function (err, stats) {
- if (err && err.code === 'ENOENT') {
- return done();
- } else if (err) {
- return done(err);
- }
- if (stats.isFile()) {
- fs.unlink(path, done);
- }
- });
- });
- });
- }, function (err) {
- if (err) {
- console.log(err);
- req.flash('failure', 'Unable to delete files at this time.');
- } else {
- req.flash('success', 'The files have been deleted successfully.');
- }
- res.redirect('/admin/courses/' + req.course.id + '/files');
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement