Сравнивая времена в мангусте - PullRequest
0 голосов
/ 07 января 2020

У меня есть схема Mechani c с двумя атрибутами StartTime и EndTime для установки (рабочие часы), когда пользователь обращается к macheni c с просьбой о приеме любой услуги, он должен ввести время обслуживания .

Теперь я хочу сравнить время, введенное пользователем, со временем в схеме macheni c (хранится в mongooDB), чтобы проверить, доступен ли какой-либо механизм c между временем обслуживания, введенным пользователем .. Сравнение времени Особенно с учетом AM и PM ...

Я использую NODE.JS, mon goose в качестве базы данных и POSTMAN для выполнения запросов API.

var Mechanicschema = new Schema({
startTime: {
        type: String,
        required:true
    },
    endTime: {
        type: String,
        required: true
    },
)}

1 Ответ

0 голосов
/ 07 января 2020

Прежде всего, если это возможно, не храните ваши 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, если вам важен только первый доступный результат.

...