繁体   English   中英

对子文档发出 POST 请求时返回未定义? mongoose,快递

[英]When making a POST request for a subdocument it comes back as undefined? mongoose, express

我正在尝试发出将新数据保存到我的子文档之一的发布请求,但在尝试访问 function 中的子文档时出现错误。它一直返回为未定义。 如何通过 id 获取特定用户并创建和添加新数据到它的子文档?

model

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const ClassworkSchema = new Schema({
    name: String,
    time: Date,
    todo: String,
    isDone: false
});

const OutcomesSchema = new Schema({
    name: String,
    time: Date,
    todo: String, 
    isDone: false,
    isApproved: false
})

const MeetupSchema = new Schema({
    name: String,
    time: Date,
    location: String,
    attended: false
})
const UserSchema = new Schema({
    name: {
      type: String,
      required: true
    },
    email: {
      type: String,
      required: true
    },
    password: {
      type: String,
      required: true
    },
    date: {
      type: Date,
      default: Date.now
    },
    classwork:{type: [ClassworkSchema], default: []},
    outcomes: [OutcomesSchema],
    meetups: [MeetupSchema],
  });



module.exports = User = mongoose.model('users', UserSchema);

controller

  classworkRouter.post("/:userId/", (req, res) => {
  User.findById(req.params.user_id, (err, user) => {
    if (err) return err;

    new_classwork = new classwork();
    (new_classwork.name = req.body.name),
      (new_classwork.date = req.body.date),
      (new_classwork.todo = req.body.todo),
      (new_classwork.isDone = req.body.isDone);
    console.log(new_classwork);

    user.classwork = {};
    user.classwork.name = req.body.classwork.name;
    user.classwork.todo = user.classwork.todo;

    if (user.classwork === undefined) {
      user.classwork.push(new_classwork);
    } else {
      user.classwork = [new_classwork];
    }

    user.save(function (err, data) {
      if (err) res.send(err);

      res.json({ message: "work added", data: data });
    });
  });
});

您可以在以下照片中看到终端中的错误:

在此处输入图像描述

在这部分代码中

new_classwork = new classwork()

你应该这样定义 new_classwrok :

let new_classwork = new classwork()

并且未定义new classwork() ,您必须在 controller 中要求 Model 的 classwork..

在这样的模式文件导出模式中:

const User = mongoose.model('users', UserSchema);
const Classwork = mongoose.model('Classwork', ClassworkSchema );

module.exports = {
  User : User ,
  Classwork : Classwork 
}

在 controller.js

const {User} = require('../models/certification');
const {Classwork } = require('../models/certification');

在需要模型之后,您可以像这样使用new Crosswork

注意:带有大写字符的课业

let new_classwork = new Classwork()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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