2015-02-03 4 views
0

Я не могу понять, как я удаляю данные в другой схеме MongoDB при создании.Как вызвать delete из другого класса MEAN

Я бегу по столу mean.js.

exports.create = function(req, res) { 
    var sign = new Sign(req.body); 

    sign.save(function(err) { 

    if (err) { 
     return res.status(400).send({ 
     message: errorHandler.getErrorMessage(err) 
     }); 
    } else { 
     sign.timesheets.forEach(function(entry) { 
     console.log(entry._id); 
     }); 

     res.jsonp(sign); 
    } 
    }); 
}; 

Здесь я звоню, чтобы создать знак. Знак содержит некоторые строки и массивы «расписания» с объектами расписания.

У меня также есть схема для расписаний, я хочу удалить все объекты расписания, которые включены в мой знак из схемы расписаний.

Вот мои табели удалить контроллер:

exports.delete = function(req, res) { 
    var timesheet = req.timesheet; 

    timesheet.remove(function(err) { 
    if (err) { 
     return res.status(400).send({ 
     message: errorHandler.getErrorMessage(err) 
     }); 
    } else { 
     res.jsonp(timesheet); 
    } 
    }); 
}; 

Как назвать это от мин контроллера знакового для каждого расписания знака?

Edit:

Маршрут:

module.exports = function(app) { 
    var sign = require('../../app/controllers/sign.server.controller'); 
    var timesheets = require('../../app/controllers/timesheets.server.controller'); 


    app.route('/sign') 
     .post(sign.create, timesheets.deleteAll); 

    delete all 

    exports.deleteAll = function(req, res) { 
     var timesheet = req.timesheet; 
     timesheet.timesheets._id.forEach(function(entry) { 
     entry.remove(function(err) { 
      console.log(entry); 
      if (err) { 
      return res.status(400).send({ 
       message: errorHandler.getErrorMessage(err) 
      }); 
      } else { 
      res.jsonp(entry); 
      } 
     }); 
     }); 
    }; 

Он работает, и я могу видеть идентификатор в консоли, но это ничего не удалять.

+0

Если вы обращаетесь к этим контроллерам throu API, попробуйте решение Майка под моим вопросом: http://stackoverflow.com/questions/28138498/access-api-endpoints-in-meanjs-from-server-controller – karolkochan

+0

@karolkochan сделанное, что теперь не нужно удалять расписания:/ – Stweet

+0

Я думаю, что ваш код 'entry.remove (...)' в 'deleteAll' не знает, что запись ссылается на вашу модель расписания. Поэтому вам нужно запустить что-то вроде 'Timesheed.remove ({_id: {$ in: your_array}}, false);' (refferring to mongo docs), где 'your_array' в этом случае' timesheet.timesheets' – karolkochan

ответ

0

Если вы внедрили это как массив документов TimesheetSchema внутри каждого документа SignSchema, то удаление родительского документа займет все, что является его частью.

Если вы сохранили его как массив идентификаторов, ссылающихся на документ в другой коллекции, то вам придется пройти через эти по одному и удалить их также. Но я думаю, что лучше пойти с первым подходом, если вам не нужно ничего делать. Это вы легко справлялись с удалением, и разумнее и разумно извлекать все, что вам нужно, чтобы обрабатывать «знак» за один раз.

Смежные вопросы