node.js - 基于另一个字段的猫鼬更改日期
问题描述
所以这是我的问题。我正在编写一个应用程序,课程应用程序,但我碰壁了。我的问题是,每当用户向数据库添加新课程时,它会自动设置两个名为startingDate
and的字段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
工作以及应该传递哪些参数,但我不知道如何从另一个字段传递值以使其工作。
解决方案
我找到了解决我的问题的方法。检查正在考虑哪个日期的附加条件:)
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)
)
});
推荐阅读
- javascript - 与锚一起使用的滚动魔术针
- c++ - SDL2 C++ 未处理异常
- jqgrid - jqGrid,复选框未在编辑表单上左对齐。引导程序
- php - PHP:如何读取 sql 的多维数组?
- vb.net - 在 vb.net 中关闭表单时出现 System.ObjectDisposedException
- java - 如何从另一个目录/包中导入类
- python - 在 Python 模块中使用 bash 命令
- swift - 使用 Alamofire 从 API 获取数据时出错
- php - php页面重定向方法在路由上因错误而不起作用
- ios - 如何在 XCode 中使用通知模拟文件?