MongoDB - JavaScript: веб-приложение перестало работать, потому что MongoDB переполнен? - PullRequest
1 голос
/ 13 февраля 2020

У меня есть очень маленький пример сайта в качестве теста. Я записываю суда широту / долготу и дополнительную информацию и отправляю их непрерывно на мой MongoDB, который, кажется, заполнен сейчас, как вы можете видеть ниже. Также там написано: Displaying documents 1 - 20 of 2984034 и есть максимальный предел (установленный мной), как показано и достигнутый:

limit

Ошибка I я получаю ошибку 5XX от платформы Heroku, что означает requests failed, теперь мне интересно, если это произойдет, потому что моя внешняя база данных MongoDB в основном заполнена? Может ли это произойти?

error

После тщательной отладки мое приложение завершается ошибкой по следующему маршруту API:

app.route("/update").post(scowlogController.createNewScowLog);

Ниже приведена выдержка из Heroku журналы. Кроме того, если это может быть полезно, это является исходным сообщением и ниже более точного экрана печати:

status

Ниже небольшой фрагмент кода scowlog_controller. js, вы увидите, что некоторые части, которые я закодировал, выдают предупреждение типа return res.status(500).send(err); на случай, если что-то случится.

Но, опять же, может ли это остановить работу всего сайта ??:

exports.listAllScowLogs = (req, res) => {
  ScowLog.find({}, (err, task) => {
    if (err) {
      return res.status(500).send(err);
    }
    res.status(200).json(task);
  });
};


exports.createNewScowLog = (req, res) => {
  let newScowLog = new ScowLog(req.body);
  let scow = scowController.registerScowById(newScowLog.scow);


  var ip = req.headers["x-forwarded-for"];
  if (ip){
    var list = ip.split(",");
    ip = list[list.length-1];
  } else {
    ip = req.connection.remoteAddress;
  }
  newScowLog.ip = ip;

  newScowLog.save((err, task) => {
    if (err) {
      return res.status(500).send(err);
    }

    res.status(201).json({"Status":"Success"});
  });
};

function chunk (arr, len) {

  var chunks = [],
      i = 0,
      n = arr.length;

  while (i < n) {
    chunks.push(arr.slice(i, i += len));
  }

  return chunks;
}

exports.createNewScowLogs = (req, res) => {

  var ip = req.headers["x-forwarded-for"];
  if (ip){
    var list = ip.split(",");
    ip = list[list.length-1];
  } else {
    ip = req.connection.remoteAddress;
  }

  req.body.forEach((scw) => {
    scw.ip = ip;
  });

  let newlogs = chunk(req.body, 400);

  let promises = [];
  newlogs.forEach((logs) => {
    promises.push(new Promise((resolve, reject) => {
      ScowLog.insertMany(logs, (err) => {
        if(err) {
          return reject(err);
        }
        else {
          return resolve("Success");
        }
      });
    }));
  });

  Promise.all(promises).then((result) => {
    return res.status(201).json({"Status":"Success"});
  }).catch((err) => {
    return res.status(500).send(err);
  });
};
exports.readScowLog = (req, res) => {
  ScowLog.findById(req.params.scowid, (err, task) => {
    if (err) {
      return res.status(500).send(err);
    }
    res.status(200).json(task);
  });
};

exports.deleteScowLogsOlderThanOneWeek = (req, res) => {
  var lastweek = moment().add(-7, 'days');
  ScowLog.remove({ created: { "$lt": lastweek } }, (err, task) => {
    if (err) {
      return res.status(500).send(err);
    }
    res.status(200).json(task);
  });
};

Что я делаю до сих пор отлаживает как можно больше, и Надеюсь, я ограничил эту проблему экранами печати и комментарием, о котором сообщил выше.

Что происходит? Может ли это быть проблемой, и поэтому решение будет просто стереть все записи и очистить все?

Спасибо за любой совет для решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...