Краткое описание проблемы
Я хочу иметь уверенную реализацию этого, поскольку я действительно не знаю, как бы это проверить. Поскольку эта функциональность действительно актуальна только в масштабе и для долгосрочного использования, но мне было бы неудобно, если бы ее не было.
У меня есть модель в моем REST APi Node.js / Express / Mongoose (MongoDB), и у нее есть индекс для даты (не Date.now, пользователь выбрал Date). В части моих маршрутов для этой модели я хочу иметь возможность запрашивать модель на основе другого индекса, но я хочу удалить все документы в этом запросе, где в индексе даты есть дата, предшествующая текущей дате (Date. в настоящее время).
Что я пробовал
Я придумала решение, хотя оно создает массив идентификаторов документов, которые должны быть удалены, и я не знаю, как удалить этот массив идентификаторов.
// @route GET api/events/new/:course
// @desc Find upcoming events based on the course
// @access Private
router.get('/new/:course', auth, async (req, res) => {
try {
// Query the events based on the course
const events = await Event.find({course: req.params.course});
let finishedEvents = [];
let validEvents = [];
// Find & Save the IDs of all events that aren't finished
events.foreach(event => {
if (Date.now < event.date) {
validEvents.push(event);
} else {
finishedEvents.push(event.id);
}
});
/** How do I delete 'finishedEvents' without any asynchronously-related issues,
* like i'm not sure mapping through 'finishedEvents' and removing them individually
* would work. Plus mongoose doesn't even have a 'deleteById' query type like it has
* 'findById'. Could I just .deleteOne({ id: arrayElement }) ?
*/
res.json(validEvents);
} catch (err) {
console.error(err.messsage);
res.status(500).send('Server error');
}
});
Ожидается, что я верну массив событий в 'validEvents' и удаляю все документы с массивом, содержащимся в 'finishEvents'.