所以这是我的问题。我正在编写一个应用程序,课程应用程序,但是遇到了麻烦。我的问题是,每当用户向数据库中添加新课程时,它都会自动设置两个名为startingDate
和nextClasses
的字段。在nextClasses
字段的开头等于startingDate
,但我想每周定期更改该日期。因此,例如,课程从1月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
的工作原理以及应该传递的参数,但是我不知道如何从另一个领域传递价值来实现这一目标。
答案 0 :(得分:0)
我找到了解决问题的方法。检查考虑哪个日期的附加条件:)
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)
)
});