У меня есть очень маленький пример сайта в качестве теста. Я записываю суда широту / долготу и дополнительную информацию и отправляю их непрерывно на мой MongoDB
, который, кажется, заполнен сейчас, как вы можете видеть ниже. Также там написано: Displaying documents 1 - 20 of 2984034
и есть максимальный предел (установленный мной), как показано и достигнутый:
![limit](https://i.imgur.com/fqIfYmF.png)
Ошибка I я получаю ошибку 5XX
от платформы Heroku
, что означает requests failed
, теперь мне интересно, если это произойдет, потому что моя внешняя база данных MongoDB
в основном заполнена? Может ли это произойти?
![error](https://i.imgur.com/f9Mkns9.png)
После тщательной отладки мое приложение завершается ошибкой по следующему маршруту API:
app.route("/update").post(scowlogController.createNewScowLog);
Ниже приведена выдержка из Heroku
журналы. Кроме того, если это может быть полезно, это является исходным сообщением и ниже более точного экрана печати:
![status](https://i.imgur.com/8brTdps.png)
Ниже небольшой фрагмент кода 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);
});
};
Что я делаю до сих пор отлаживает как можно больше, и Надеюсь, я ограничил эту проблему экранами печати и комментарием, о котором сообщил выше.
Что происходит? Может ли это быть проблемой, и поэтому решение будет просто стереть все записи и очистить все?
Спасибо за любой совет для решения этой проблемы.