如何从其他类MEAN调用delete

时间:2015-02-03 15:54:13

标签: javascript angularjs mongodb mean-stack

我无法弄清楚当我创建时如何删除另一个MongoDB方案中的数据。

我在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);
    }
  });
};

如何通过min sign controller为符号中的每个时间表调用此内容?

修改

路线:

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);
          }
        });
      });
    };

它运行,我可以在控制台中看到id,但它不会删除任何内容。

1 个答案:

答案 0 :(得分:0)

如果您已在每个SignSchema文档中将其实现为TimesheetSchema文档的数组,那么删除父文档将使用它的所有部分。

如果您将其存储为引用另一个集合中的文档的ID数组,那么您必须逐个浏览并删除它们。但我认为如果你不需要做任何花哨的事情,最好采用第一种方法。这是您可以轻松处理删除,并且在语义和性能方面更有意义地检索一次性处理“符号”所需的所有内容。