Я запрашиваю у Mongoose целую коллекцию, называемую «заказами».Затем я получаю разницу в днях между созданием заказа и текущей датой.Когда прошло определенное количество дней, я хочу удалить документ (заказ) из БД.
Я перебираю заказы в цикле for, поэтому, когда цикл находит заказ с разницей в количестве x дней, я просто пытаюсь вызвать 'orders [i] .remove ()'.Это ближе к нижней части предоставленного блока кода.
Я заметил, что метод remove () находится в Model.prototye, а не в Document.prototype.Но я видел другие блоки кода, где рекомендуется вызывать remove () в запросе find ().
Order.find({},'-_id -line_items -shipping_lines', function(err, orders) {
if(err) {
console.log(err);
}
for(i = 0; i < orders.length; i++) {
// Taken from Punit Jajodia https://www.toptal.com/software/definitive-guide-to-datetime-manipulation
const dateOfOrder = orders[i].date;
const now = new Date();
const datefromAPITimeStamp = (new Date(dateOfOrder)).getTime();
const nowTimeStamp = now.getTime();
const microSecondsDiff = Math.abs(datefromAPITimeStamp - nowTimeStamp );
// Number of milliseconds per day =
// 24 hrs/day * 60 minutes/hour * 60 seconds/minute * 1000 msecs/second
const daysDiff = Math.floor(microSecondsDiff/(1000 * 60 * 60 * 24));
console.log(daysDiff);
// If it is exactly 15 days from the triggering order, post the new order
if (daysDiff === 15) {
// ?consumer_key=${process.env.CONS_KEY}&consumer_secret=${process.env.CONS_SEC}
//console.log(orders[i]);
axios.post(baseUrl + `/orders?consumer_key=${process.env.CONS_KEY}&consumer_secret=${process.env.CONS_SEC}`, orders[i])
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
// console.log(error);
})
.then(function () {
});
}
if (daysDiff === 0) {
//Remove orders that are 25 days old from the db
orders[i].remove(function(err,result) {
if(err) {
console.log(err);
}
console.log(result);
});
}
}
});
Я ожидал, что документ будет удален, если утверждение if верно.Но я получаю это сообщение об ошибке: «_id не найден в документе!», Имя: «MongooseError» «Я также просматриваю заказы в mlab, и на них определенно есть« _id ».