【问题标题】:How to call delete from other class MEAN如何从其他类 MEAN 中调用删除
【发布时间】:2015-02-03 15:54:12
【问题描述】:

我不知道在创建时如何删除另一个 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);
    }
  });
};

在这里,我打电话来创建一个标志。 Sign 包括一些字符串和一个带有时间表对象的数组“timesheets”。

我还有一个时间表方案,我想从时间表方案中删除所有包含在我的标志中的时间表对象。

这是我的时间表删除控制器:

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

我如何从最小符号控制器调用这个,对于每个时间表?

编辑

路线:

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,但它没有删除任何东西。

【问题讨论】:

  • 如果您通过 API 访问此控制器,请在我的问题下尝试 Mike 的解决方案:stackoverflow.com/questions/28138498/…
  • @karolkochan 完成了,现在不要删除时间表:/
  • 我认为deleteAll 函数中的代码entry.remove(...) 不知道该条目是指您的时间表模型。所以你需要运行类似Timesheed.remove( { _id: { $in: your_array } }, false );(参考mongo docs)的东西,在这种情况下your_arraytimesheet.timesheets
  • @karolkochan 是的,你是对的,它现在看起来像这样 pastebin.com/Nd21H2Qq 但是如果它有多个时间表,则崩溃,认为这是导致 res.jsonp(timesheet),我如何将其更改为 res每个完成后? :)
  • 您可以试试这个:pastebin.com/DgKS5zTD 或这个:pastebin.com/9j9VigYK 只需添加 index 变量并检查最后一个元素以返回响应对象。

标签: javascript angularjs mongodb mean-stack


【解决方案1】:

如果您已将其实现为每个 SignSchema 文档中的 TimesheetSchema 文档数组,则删除父文档将带走它的所有内容。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多