Я работаю над проектом, связанным с событиями, где мне нужно убедиться, что два события не могут быть установлены в одно и то же время для одного и того же места.
Для этого при каждом добавлении нового событияЯ использую find (), чтобы получить все события, имеющие одно и то же место события, и затем выполнить итерацию, чтобы проверить, не конфликтуют ли новые временные интервалы событий с другими событиями в базе данных с тем же местом.
Я получаю две ошибки:
1) не может установить заголовки после их отправки
2) Я думаю, что моя логика итерации неверна, я хочу, чтобы массив был проверен полностью, а затем вставлен, если то же самоеМесто проведения мероприятия имеет различное время для любого события XYZ.
Я пытался использовать фильтр, уменьшить и т. д., но, похоже, не смог достичь желаемых результатов.
_this.insert = function(req, res) {
var obj = new _this.model(req.body);
obj.save(function(err, item) {
if (err && err.code === 11000) {
res.sendStatus(400);
}
if (err) {
return console.error(err);
}
_this.model.find({ event_ground: req.body.event_ground }, function(
err,
docs
) {
events = docs;
events.map(event => {
if (event.event_date_time && event.event_end_time) {
endTimeofEvent = moment(event.event_end_time);
timeofEvent = moment(event.event_date_time);
let isStartTime = moment(req.body.event_date_time).isBetween(
timeofEvent,
endTimeofEvent
);
debugger
let isEndTime = moment(req.body.event_end_time).isBetween(
timeofEvent,
endTimeofEvent
);
debugger
if (isStartTime === false && isEndTime === false) {
console.log('DB UPDATED');
debugger
_this.userModel.updateOne(
{
_id: req.params.id
},
{
$push: {
events: item._id
}
},
function(err) {
if (err) {
res.status(404).json('Something Went Wrong');
}
res.sendStatus(200);
}
);
debugger
}
if(isStartTime === true || isEndTime === true) {
console.log('DB WONT BE UPDATED');
res.status(400).json({
success: false,
msg:
'This Venue is booked from ' +
timeofEvent.format('LLL') +
' & ' +
endTimeofEvent.format('LLL'),
status: false
});
}
}
});
});
});
};
Если события с одинаковымиимя не имеет временного столкновения, добавляется новое событие, в противном случае может быть добавлено событие и т. д.