Прежде всего, если это возможно, не храните ваши startTime
и endTime
в виде строки. Сохраните их как число (Unix отметка времени) или как объект даты. В противном случае было бы действительно сложно создать правильный запрос к вашей базе данных, который является наиболее эффективным способом возврата наиболее релевантных результатов. Это также устраняет необходимость заботиться о AM или PM.
Предполагая, что вы сохраняете их как объекты Date и экспортируете модель вашей схемы Mechanics
, например:
const Mechanicschema = new Schema(
{
startTime: { type: Date, required: true },
endTime: { type: Date, required: true },
}
);
const Mechanics = mongoose.model('mechanics', Mechanicschema );
module.exports = Mechanics;
вы можете сделать следующее:
const checkMechanic = async(user_date) => {
// where user_date is expected to be a Date object similar to new Date()
const results = await Mechanics.find({
startTime: { $lte: user_date },
endTime: { $gte: user_date }
});
if (results.length > 0) {
return results;
}
return false;
};
Что произойдет здесь, когда вы вызовете эту функцию, так это то, что если никакие доступные механики не найдены, функция вернет false, в противном случае она вернет список вся механика, доступная для выполнения задачи.
Вы также можете заменить find()
на findOne
, если вам важен только первый доступный результат.