const Message = require("../models/message.js"); const asyncHandler = require("express-async-handler"); const { body, validationResult } = require("express-validator"); const { default: mongoose } = require("mongoose"); exports.index = asyncHandler(async (req, res, next) => { // gets message from database const message = await Message.findOne({ _id: req.params.message }) .lean() .exec(); res.render("message", { message: message, user: req.user, }); }); exports.message_create_get = (req, res, next) => { res.render("createmessage"); }; exports.message_create_post = [ // Validate and sanitize title body("title", "Please enter Insight title!") .trim() .isLength({ min: 1 }) .escape(), // Validate and sanitize text body("message", "Please enter your Insight!") .trim() .isLength({ min: 1 }) .escape(), // Process request after validation and sanitization. asyncHandler(async (req, res, next) => { // Extract the validation errors from a request. const errors = validationResult(req); // if there are validation errors if (!errors.isEmpty()) { // Render the creation form again with sanitized values/error messages. res.render("createmessage", { errors: errors.array(), }); return; } // Data from form is valid. else { // create new user with temporary password let message = new Message({ title: req.body.title, date: new Date(), text: req.body.message, author: req.user.name, _id: new mongoose.Types.ObjectId(), }); await message.save(); // saved. Redirect to home page. res.redirect(`/`); } }), ]; exports.message_delete_get = asyncHandler(async (req, res, next) => { // delete message from database await Message.findByIdAndDelete(req.params.message); res.redirect("/"); });