Пн goose изменение даты на основе другого поля - PullRequest
0 голосов
/ 14 января 2020

так вот моя проблема. Я пишу приложение, приложение курса, и я ударил стену. Моя проблема в том, что всякий раз, когда пользователь добавляет новый курс в базу данных, он автоматически устанавливает два поля с именами startingDate и nextClasses. В начале nextClasses поле равно startingDate, но я бы хотел периодически менять эту дату каждую неделю. Так, например, занятия начинаются 11 января, а ночью между воскресеньем и понедельником дата обновляется до 18 числа в каждом документе. Моя проблема в том, что я понятия не имею, как я могу написать свой код updateMany, чтобы изменить эти значения. Я знаю, что мне нужно использовать какую-то библиотеку для обновления этой даты, например nodejs cron, но не могу понять, как должна выглядеть updateMany.

Вот мой courseModel

const mongoose = require('mongoose');

const courseSchema = new mongoose.Schema({
    name: {
        type: String,
        trim: true,
        required: true
    },
    owner: {
        type: mongoose.Schema.Types.Object,
        // required: true,
        owner: {
            name: String,
            email: String
        }
    },
    startingDate: {
        type: Date
    },
    nextClasses: {
        type: Date
    },
    students: [
        {
            type: mongoose.Schema.Types.Object,
            required: true,
            trim: true
        }
    ]
});

const Course = mongoose.model('Course',courseSchema);

module.exports = Course;

И мой маршрут для обновления данных, который не работает.

router.patch('/course/updateTime',async(req,res) => {
    try {

        const data = await Course.updateMany({"nextClasses": whatShouldIPutHere},
            { $set: {"nextClasses": new Date() }});
    } catch(e) {
        console.log(e);
    }
});

Я понимаю, как работает updateMany и что параметры, которые я должен передать, но я не знаю, как передать значение из другого поля, чтобы эта работа работала.

1 Ответ

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

Я нашел решение своей проблемы. Дополнительное условие, чтобы проверить, какую дату принимать во внимание:)

const courses = await Course.find({});
            courses.forEach(course => {
                Course.updateMany({"nextClasses": course.nextClasses === course.startingDate ? course.startingDate : course.nextClasses},
                    {$set: {"nextClasses": new Date()}},(err) => console.log(course.nextClasses)
                )
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...