我有一个这样的用户模型:
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
courses: {
type: Object,
required: true
}
})
像这样的课程模型:
const courseSchema = new mongoose.Schema({
course_code: {
type: String,
required: true
},
course_title: {
type: String,
required: true
}
})
app.js文件在这里:
app.post('/enroll/:id', async function (req, res) {
const courseWithID = await Course.findById(req.params.id)
const course = {"course_code": courseWithID.course_code, "course_title": courseWithID.course_title}
const userID = req.user.id
await User.findByIdAndUpdate(userID, {"courses": course}, {new: true, runValidators: true, useFindAndModify: false})
res.redirect('/dashboard')
})
第一次执行app.js之后,我得到以下结果:
{
"name": "Person",
"courses": {
"course_code": "123",
"course_title": "ABC"
}
}
在第二次执行app.js之后,我得到以下结果:
{
"name": "Person",
"courses": {
"course_code": "456",
"course_title": "DEF"
}
}
但是在第二次执行app.js之后,我想要这个结果:
{
"name": "Person",
"courses": [
{
"course_code": "123",
"course_title": "ABC"
},
{
"course_code": "456",
"course_title": "DEF"
}
]
}
我怎样才能做到这一点?
快速修复
courses
类型更改Object
为Array
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
courses: {
type: Array,
required: true
}
})
courses
因为我们需要将对象推入数组中const courseWithID = await Course.findById(req.params.id);
const course = {
"course_code": courseWithID.course_code,
"course_title": courseWithID.course_title
};
const userID = req.user.id;
await User.findByIdAndUpdate(userID,
{
"$push": { "courses": course }
},
{new: true, runValidators: true, useFindAndModify: false}
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句