项目实战:博客项目

本文介绍了一个使用Node.js、Express、Mongoose和MongoDB开发的博客项目。详细阐述了从项目初始化、数据库连接、用户登录验证、用户管理(包括新增、修改、删除用户)到数据分页等各个功能的实现过程,涵盖了前后端交互、密码加密、会话管理等多个技术点。
摘要由CSDN通过智能技术生成

一、项目概括

1 功能描述
   设计一个博客文章管理系统,使之具有管理员登录验证、密码加密、显示、新增、修改、删除、查询用户和文章、数据分页、退出登录等功能。
2 具体设计信息
  • 用户信息包括:用户编号、用户名、邮箱、密码、角色、状态。
  • 文章信息包括:ID、标题、发布时间、作者。
3 技术栈选择
   mongodb + express框架 + node.js
4 项目文件结构

在这里插入图片描述

二、案例初始化

1. 建立项目所需文件夹
  • public 静态资源
  • model 数据库操作
  • route 路由
  • views 模板
2. 初始化项目描述文件
  • 使用 npm init -y 生成 package.json 文件
3. 下载项目所需第三方模块

npm install express mongoose art-template express-art-template

4. 创建网站服务器
  • app.js 项目入口文件\项目主文件
// 引入 express 框架
const express = require('express');

// 创建网站服务器
const app = express();

// 监听80端口
app.listen(80);
console.log('服务器已启动');
5. 构建模块化路由
  • route/home.js 创建博客展示页面路由
// 引入 express 框架
const express = require('express');

//创建博客展示页面路由对象
const home = express.Router();


home.get('/home', (req, res) => {
   
   res.send('欢迎来到博客首页');
});

//将路由对象作为模块成员进行导出
module.exports = home;
  • route/admin.js 创建博客管理页面路由
// 引入 express 框架
const express = require('express');

//创建博客展示页面路由对象
const admin = express.Router();

//创建登录路由
admin.get('/login', require('./admin/loginPage'));

//实现登录功能
admin.post('/login', require('./admin/login'));

//创建用户列表路由
admin.get('/user', require('./admin/userPage'));

//实现退出功能
admin.get('/logout', require('./admin/logout'));

//创建用户编辑页面路由
admin.get('/user-edit', require('./admin/user-edit'));

//创建实现用户添加功能路由
admin.post('/user-edit', require('./admin/user-edit-fn'));

//实现修改用户信息功能
admin.post('/user-modify', require('./admin/user-modify'));

//实现删除用户功能路由
admin.get('/delete', require('./admin/user-delete'));

//将路由对象作为模块成员进行导出
module.exports = admin;
  • 将home、admin路由引入到app.js中
//引入路由模块
const home = require('./route/home');
const admin = require('./route/admin');

//将路由和请求路径进行匹配
app.use('/home', home);
app.use('/admin', admin);

6. 构建博客管理页面模板

需要注意:

  1. 静态资源的外链文件,是浏览器解析的,所以相对路径是相对于浏览器的请求地址。
<link href="/admin/css/boot-crm.css" rel="stylesheet" type="text/css" />
  1. 模板的路径是由模板引擎来解析的,所以写相对路径是没有问题的。
{
   {
   include './common/header'}}

三、登录功能

1. 创建用户集合,初始化用户
1.1 连接数据库

model/connect.js,代码如下:

//连接数据库

// 引入系统模块mongoose
const mongoose = require('mongoose');
// 数据库连接   27017是mongodb数据库的默认端口
mongoose.connect('mongodb://localhost/blog', {
    useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => console.log('数据库连接成功')) //连接成功
    .catch((err) => console.log(err, '数据库连接失败')); //连接失败
1.2 创建用户集合

model/user.js,代码如下:

const mongoose = require('mongoose');
//创建用户集合规则
const userSchema = new mongoose.Schema({
   
    username: {
   
        type: String,
        //true表示title 属性必传;后面的是错误提示内容
        required: [true, '请传入用户名'],
        //最小长度是2,最大长度是5
        minlength: [2, '姓名长度不能小于2'],
        maxlength: [20, '姓名长度最大不能超过20']
    },
    email: {
   
        type: String,
        //保证邮箱地址在插入数据库时不重复
        unique: true,
        required: true
    },
    password: {
   
        type: String,
        required: true
    },
    role: {
   
        type: String,
        required: true
    },
    //0 启用状态
    //1 禁用状态
    state: {
   
        type: Number,
        default: 0
    },
});
//使用规则,创建集合,返回集合构造函数(参数一:集合名称;参数二:集合规则)
const User = mongoose.model('User', userSchema
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值