[英]How to add a new Object to a property of object in a model
let userSchema = new Schema({
email: {type: String, required: true},
password: {type: String, required: true},
name: {type: String, required: true},
phoneNumber: {type: Number, required: true},
schedule: {type: String, required: true},
courses: {type: Array, required: false}
});
我有这种情况,我的问题是如何向课程属性添加新课程,但在我的情况下课程是另一个对象。 我可以使用 updateOne 方法进行更新,但它更改了 1 个项目而不是另一个。
据我了解,您想将课程嵌入到用户模型中。
所以你需要在你的用户模型中做这个改变:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
let userSchema = new Schema({
email: { type: String, required: true },
password: { type: String, required: true },
name: { type: String, required: true },
phoneNumber: { type: Number, required: true },
schedule: { type: String, required: true },
courses: [
new Schema({
name: String
})
]
});
module.exports = mongoose.model("User", userSchema);
并像这样为给定用户创建一个课程:
app.post("/user/:id/course", async (req, res) => {
const result = await User.findByIdAndUpdate(
req.params.id,
{
$push: {
courses: {
name: req.body.name
}
}
},
{
new: true
}
);
res.send(result);
});
当您使用此正文向 url http://localhost:3000/user/5de2cf9323f76c207c233729/course
发送请求时:(请注意,5de2cf9323f76c207c233729 是现有用户 _id)
{
"name": "Course 1"
}
响应将是这样的,这意味着课程已添加到用户:
{
"_id": "5de2cf9323f76c207c233729",
"email": "abc@def.net",
"password": "123123",
"name": "Max",
"phoneNumber": 123123123,
"schedule": "sc1",
"courses": [
{
"_id": "5de2cfa723f76c207c23372a",
"name": "Course 1"
}
],
"__v": 0
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.