如何使用猫鼬在现有文档中查找和更新子文档

时间:2019-08-06 16:25:46

标签: node.js express mongoose

我是猫鼬的新手,我正在努力尝试在现有文档中更新或创建子文档。

这是一个用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子文档?

0 个答案:

没有答案