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

标签 javascript node.js mongodb mongoose

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/

相关文章:

javascript - 缓存与 .querySelector

javascript - 自动运行 firefox 扩展 jpm

javascript - node.js 可以配置函数名吗?

node.js - sequelize ORM中的多次计数查询

ruby-on-rails - 获取字段最大值的对象[Mongoid]

mongodb - ReactiveMongo:插入新文档时如何处理数据库错误

javascript - 无法在 phantomjs 中获取 span 元素的左上角坐标,但在浏览器中它可以工作

javascript - 用 <div> 填充 2 点之间的间隙

node.js - 从 url 获取日期并返回 json

java - 在 mongodb 中查找没有光标的条目?