【问题标题】:Post an array of objects ExpressJs Mongoose NodeJs发布一组对象 ExpressJs Mongoose NodeJs
【发布时间】:2020-07-25 00:42:20
【问题描述】:

更新

我有一个猫鼬模式和快速控制器,现在我必须发布一个基于该模式的对象数组,我必须发布 30 个对象,这是我发布的两个示例,我收到了响应,我希望看到所有对象的数组。

CoursesModel.ts

const CoursesSchema = new Schema({
    courses: [{
        course_status: String,
        course_code: String,
        course_name: req.body.course_name,
        institute_name: String,
        hour_duration: Number,
        modality: String,
        schedule: String,
        start_date: Date,
        finish_date: Date,
        enroll_date_limit: Date,
        course_value: Number,
    }],
    created_at: {
        type: Date,
        default: Date.now
    }
});

coursesController.ts // 创建课程

const Courses = CoursesModel;

public createCourses(req: Request, res: Response) {

        try {

            if (!req.body) {
                throw new Error(`Is missing parameter :  Table data`);
            }

            const createCourse = {
                courses: [{
                    course_status: req.body.course_status,
                    course_code: req.body.course_code,
                    course_name: req.body.course_name,
                    institute_name: req.body.institute_name,
                    hour_duration: req.body.hour_duration,
                    modality: req.body.modality,
                    schedule: req.body.schedule,
                    start_date: req.body.start_date,
                    finish_date: req.body.finish_date,
                    enroll_date_limit: req.body.enroll_date_limit,
                    course_value: req.body.course_value,
                }],
            created_at: new Date()
            };

            let newCourses = new Courses(createCourse);

            newCourses.save().then(data => {
                res.json(data);
            })
                .catch(err => {
                    res.status(500).send({
                        message:
                            err.message || "Some error occurred while creating the course"
                    });
                })
            );

        } catch (error) {

            this.logger.error({
                data: req.body,
                error: error,
                source: 'Error in function createCourses'
            });
            res.status(500);
            return res.send({ error: (error.message) ? error.message : "Internal server error" });
        }

    }

我在 Insomnia 上发布的 Json 身体

{"courses":[{
    "course_status": "Active",
    "course_code": "0004",
    "institute_name": "Berkley",
    "course_name": "Programming",
    "month_duration": 2,
    "hour_duration": 120,
    "modality": "Virtual",
    "schedule": "2 a 5",
    "start_date": "2021-07-02T05:00:16.000Z",
    "finish_date": "2021-07-02T05:00:16.000Z",
    "enroll_date_limit": "2021-07-02T05:00:16.000Z",
    "course_value": 300000,
 },
 {
    "course_status": "Active",
    "course_code": "0005",
    "institute_name": "MIT",
    "course_name": "Digital Marketing",
    "hour_duration": 120,
    "modality": "Virtual",
    "schedule": "2 a 5",
    "start_date": "2021-07-02T05:00:16.000Z",
    "finish_date": "2021-07-02T05:00:16.000Z",
    "enroll_date_limit": "2021-07-02T05:00:16.000Z",
    "course_value": 300000,
 }]}

这就是我从失眠中得到的

失眠反应

{
  "successfully": true,
  "data": {
    "_id": "5f1ae0e3cf5d702706b5bb09",
    "courses": [
      {
        "_id": "5f1ae0e3cf5d702706b5bb0a"
      }
    ],
    "created_at": "2020-07-24T13:23:47.173Z",
    "__v": 0
  }
}

【问题讨论】:

    标签: javascript node.js typescript express mongoose


    【解决方案1】:

    使用res.json(data)代替res.send(data)和代替return from直接使用save

    const Courses = CoursesModel;
    
    public createCourses(req: Request, res: Response) {
    
            try {
    
                if (!req.body) {
                    throw new Error(`Is missing parameter :  Table data`);
                }
    
                const createCourse =Courses ({
                    courses: [{
                        course_status: req.body.course_status,
                        course_code: req.body.course_code,
                        course_name: req.body.course_name,
                        institute_name: req.body.institute_name,
                        hour_duration: req.body.hour_duration,
                        modality: req.body.modality,
                        schedule: req.body.schedule,
                        start_date: req.body.start_date,
                        finish_date: req.body.finish_date,
                        enroll_date_limit: req.body.enroll_date_limit,
                        course_value: req.body.course_value,
                    }],
                created_at: new Date()
                });
    
                newCourses.save().then(data => {
                    res.json(data);
                })
                    .catch(err => {
                        res.status(500).send({
                            message:
                                err.message || "Some error occurred while creating the course"
                        });
                    })
                );
    
            } catch (error) {
    
                this.logger.error({
                    data: req.body,
                    error: error,
                    source: 'Error in function createCourses'
                });
                res.status(500);
                return res.send({ error: (error.message) ? error.message : "Internal server error" });
            }
    
        }
    

    【讨论】:

    • 我得到了与我附加的图像相同的响应
    • 是的,它适用于 .json() 和 .send() ,但我得到相同的服务器响应。 { "_id": "5f1a54a73ac9fd869b68bb66", "created_at": "2020-07-24T03:25:27.472Z", "__v": 0 }
    • 谢谢。;) 我也挂了它保存和返回文档的方式你试过吗?
    • 我已经解决了。感谢您的帮助,您的帖子真的很有帮助。
    【解决方案2】:

    我是这样解决的

    const Courses = CoursesModel;
    
    public async createCourses(req: Request, res: Response) {
    
            try {
    
                if (!req.body) {
                    throw new Error(`Is missing parameter :  Table data`);
                }
    
                const courses = []
                 
             for(const course of req.body.courses){
    
                const tableCourse ={
                        course_status: course.course_status,
                        course_code: course.course_code,
                        course_name: course.course_name,
                        institute_name: course.institute_name,
                        hour_duration: course.hour_duration,
                        modality: course.modality,
                        schedule: course.schedule,
                        start_date: course.start_date,
                        finish_date: course.finish_date,
                        enroll_date_limit: course.enroll_date_limit,
                        course_value: course.course_value,
                        created_at: new Date()
                    };
    
                let newCourses = new Courses(tableCourse);
    
                    const newCourses = await newTableCourses.save()
    
                    courses.push(newCourses)
    
                }
                res.json({ successfully: true, data: { courses } });
    
    
            } catch (error) {
    
                this.logger.error({
                    data: req.body,
                    error: error,
                    source: 'Some error occurred while creating the course.'
                });
                res.status(500);
                return res.send({ error: (error.message) ? error.message : "Internal server error" });
            }
    
        }
    
    

    CourseModel.ts

    const CoursesSchema = new Schema({
            course_status: String,
            course_code: String,
            course_name: req.body.course_name,
            institute_name: String,
            hour_duration: Number,
            modality: String,
            schedule: String,
            start_date: Date,
            finish_date: Date,
            enroll_date_limit: Date,
            course_value: Number,
            created_at: {
              type: Date,
              default: Date.now
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-01-24
      • 2016-06-09
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2014-12-01
      • 2021-02-26
      • 2016-03-22
      • 2011-12-05
      相关资源
      最近更新 更多