0

UPDATE

I have a mongoose schema and express controller, now I have to post an Array of Objects based on that schema, I have to post like 30 Objets, here is an example of two I posted and I received that response, and I wanto to see the Array of all Objects.

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 // createCourse

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" });
        }

    }

Json body I post on Insomnia

{"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,
 }]}

This is what I get from Insomnia

Insomnia response

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

2 Answers 2

1

I solve in this way

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
    }
});
Sign up to request clarification or add additional context in comments.

Comments

0

Use res.json(data) instead of res.send(data) and instead of return from directly use 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" });
        }

    }

7 Comments

I getting the same response of the image I attached
Yes, it's works with .json() and .send() , but I getting the same server response. { "_id": "5f1a54a73ac9fd869b68bb66", "created_at": "2020-07-24T03:25:27.472Z", "__v": 0 }
Thanks.;) i have also hanged the way it saves and returns the document have you tried that way?
I alredy solve it. Thanks for your help, your post was really helpful.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.