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}
});
我有这种情况,我的问题是如何向类(class)属性添加新类(class),但在我的情况下,类(class)是另一个对象。我可以使用 updateOne 方法进行更新,但它更改了 1 项,但没有更改另一项。
最佳答案
据我了解,您希望将类(class)嵌入到用户模型中。
因此您需要在用户模型中进行此更改:
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);
并为给定用户创建一个类(class),如下所示:
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"
}
响应将如下所示,这意味着类(class)已添加到用户:
{
"_id": "5de2cf9323f76c207c233729",
"email": "abc@def.net",
"password": "123123",
"name": "Max",
"phoneNumber": 123123123,
"schedule": "sc1",
"courses": [
{
"_id": "5de2cfa723f76c207c23372a",
"name": "Course 1"
}
],
"__v": 0
}
关于javascript - 如何将新对象添加到模型中对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119673/