DAY3-新闻模块分类和新闻信息crud

本文档详细介绍了新闻模块的分类管理和新闻信息的CRUD操作,包括新闻分类表的设计,分类的添加、删除和编辑,新闻信息的展示、添加、删除和编辑,以及时间格式的处理。通过路由配置、表单提交、数据库操作实现了功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新闻分类
每一条新闻信息都是要属于某一个分类的。所以在添加新闻之前,我们应该先完成新闻分类模块
1.先设计新闻分类表
2.代码完成curd操作


一、新建路由-跳转地址

路由目录news.js

const express = require('express');
const router = express.Router(); // 路由器
/*1.新闻分类的添加*/
router.get('/category/add', (req, res) => {
   
    res.render('category-add', {
   title: '新闻的分类添加',info:{
   });
});
/*2.新闻分类的展示*/
router.get('/category/list', (req, res) => {
   
    res.render('category-list', {
   title: '新闻的分类展示'});

});
module.exports = router;

app.js添加

const newsRouter = require('./routes/news.js');
app.use('/admin/news', newsRouter);

启动查看页面
http://localhost:3000/admin/news/category/add
在这里插入图片描述

二、分类的添加

页面分类提交form

<form class="layui-form" action="/admin/news/category/store" method="post" enctype="application/x-www-form-urlencoded">

路由里news.js添加接收表单的配置,因为要收集数据,然后定义表的模型,入库,所以在目录models添加category.js进行配置
category.js

const mongoose = require('../db/mongodb.js');
const Schema = mongoose.Schema({
   
    cateName: {
   
        type: String,
        required: [true, '分类名称不能为空'], // 定义验证规则,这个字段不能为空,必填的
        minlength: [2, '分类名称的最小长度为10个字符'], // 最小长度
        maxlength: [30, '分类名称的最大长度为30个字符'], // 最大长度
    },
});
/*mongoose.model 可以接受第三个参数,如果传递了第三个参数,代表实际的表名,不以第一个为准。*/
const Model = mongoose.model('Category', Schema, 'category');
Model.fields = {
   
    cateName: '分类名称',
};
module.exports = Model;

new.js

const express = require('express');
const router = express.Router(); // 路由器
const categoryModel = require('../models/category.js');
/*1.新闻分类的添加*/
router.get('/category/add', (req, res) => {
   
    res.render('category-add', {
   title: '新闻的分类添加',info:{
   }});
});
router.post('/category/store', async (req, res) => {
   
    // 收集数据,然后定义表的模型,入库
    let {
   cateName} = req.body;
    let cateObj = new categoryModel({
   cateName});
    let error = cateObj.validateSync();
    if (error) {
   
        const errorRs = [];
        for (let attr in error.errors) {
   
            errorRs.push(`${
     categoryModel.fields[attr]} 字段:${
     error.errors[attr]}`);
        }
        let url = '/admin/news/category/add';
        let time = 3;
        res.render('error', {
   errorRs, url, time});
        return;
    }
    // 信息合法
    try {
   
        let info = await cateObj.save();
        res.redirect('/admin/news/category/list');
    } catch (e) {
   
        res.redirect('/admin/news/category/add');
    }
});
/*2.新闻分类的展示*/
router.get('/category/list', async(req, res) => {
   
    /*获取所有的分类信息*/
    const infos = await categoryModel.find();
    console.log(infos);
    res.render('category-list', {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值