routes\api.js :
const mongoose = require("mongoose");
const IssueModel = require("../models/issue-model");
const ProjectModel = require("../models/project-model");
module.exports = function (app) {
app
.route("/api/issues/:project")
.post(async (req, res) => {
try {
const {
issue_text,
issue_title,
created_by,
assigned_to,
status_text,
} = req.body;
const project = req.params.project;
if (!issue_text || !issue_title || !created_by) {
return res.status(200).json({ error: "required field(s) missing" });
}
let projectData = await ProjectModel.findOne({ name: project });
if (!projectData) {
return res.status(404).json({ error: "Project not found" });
}
const newIssue = new IssueModel({
projectId: projectData._id,
issue_title,
issue_text,
created_on: new Date(),
updated_on: new Date(),
created_by,
assigned_to: assigned_to || "",
open: true,
status_text: status_text || "",
});
// Save the issue separately in the issues collection
await newIssue.save();
// Initialize the issues array if it's undefined
if (!projectData.issues) {
projectData.issues = [];
}
// Update the project document to include the new issue
projectData.issues.push(newIssue);
await projectData.save();
// Response with the newly created issue
return res.json(newIssue);
} catch (err) {
return res
.status(500)
.send("Error while saving in Post: " + err.message);
}
})
};