我是猫鼬的新手,我正在努力尝试在现有文档中更新或创建子文档。
这是一个用express制作的nodejs服务器。我有一个带有用户详细信息的User
模型,其中一个属性是另一个名为Course
的架构的数组。用户在登录后使用数组Courses
为空就创建了该用户。但是,当用户注册课程时,应创建一个新对象Course
并将其推送到用户Courses
数组。
这是User
模型
const UserModel = new schema({
username: String,
email: String,
displayName: String,
courses: [CourseModel]
});
这是Course
模型
const CourseModel = new schema({
name: String,
lastAccess: Date,
createdAt: Date,
children: [LessonModel]
});
这是我现在正在尝试的代码
router.post('/user/course/:id', (req, res) => {
const id = req.params.id;
const course = {name: id};
const query = {username: req.user.username, courses: course },
update = { lastAccess: Date.now() },
options = { upsert: true, new: true, setDefaultsOnInsert: true };
User.findOneAndUpdate(query, update, options, function (err, result) {
if (err) console.error(err);
});
})
我希望首先找到用户,然后再找到课程,如果不存在,则创建子文档,但是它将创建一个具有相同用户名和空数组的全新文档。
我应该如何首先找到用户,然后再创建或更新Course
子文档?