繁体   English   中英

如何将新对象添加到模型中对象的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM