我有一个这样的用户模型:
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"
}
]
}
我该怎么做?
答案 0 :(得分:0)
快速修复,
courses
类型Object
更改为Array
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
courses: {
type: Array,
required: true
}
})
courses
之前添加https://github.com/graphql/express-graphql,因为我们需要将对象推入数组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}
)