Reputation: 171
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
}
}
Upvotes: 0
Views: 1816
Reputation: 171
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
}
});
Upvotes: 1
Reputation: 286
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" });
}
}
Upvotes: 0