留言板项目开发

一、需求分析(需求分析很重要)

需求:描述项目最终效果的文字和图;

产品经理写需求,然后要经过各个项目角色的评审通过;

需求一般包括:原型图,功能描述

原型图:

留言板项目开发

 留言板项目开发

 留言板项目开发

功能描述:

功能描述——注册和登录:

用户名唯一,不能重复注册;

用户名和密码匹配,即可登录;

登录成功后,跳转到首页

功能描述——首页:

非登录用户不能进入首页,登录用户可发布留言;

可查看全部留言,或可查看自己的留言;

只能编辑和删除自己的留言,无权操作他人留言

二、数据库设计

mongodb创建数据库和集合(分析需要创建的数据库和集合):

创建数据库comment;

创建集合comments,存储留言数据;

创建集合users,存储用户

回顾mongoose:
mongoose定义Schema和Model:

三、接口(路由)设计

分析需要哪些接口:

注册、登录、获取留言列表、创建留言、更新留言、删除留言

哪些接口需要登录校验:

登录和注册不需要登校验,其他接口都需要登录校验

登录如何实现(跨域传递cookie):

使用cookie和session实现登录,但cookie跨域不共享;

前后端分离的开发方式,需要设置跨域传cookie

四、初始化环境开发

初始化koa2环境:

1)开发环境——初始koa2项目环境

安装 koa generator 脚手架:

留言板项目开发

使用脚手架创建koa 2项目,项目名为 test6:留言板项目开发

 打开该项目文件的控制台,运行npm install安装: 

留言板项目开发

在根目录下创建src目录,将routes、views、app.js移到src文件下;

2)开发环境——规范目录和层级:

留言板项目开发

 为何要分层:拆分模块,职责明确清晰;易于扩展

留言板项目开发

3)开发环境——连接数据库:

使用npm安装mongoose:留言板项目开发

连接数据库的代码:

// 使用mongoose——连接数据库
// 在src的db目录下创建db.js文件

// 引用mongoose
const mongoose = require('mongoose')

// 定义数据库的地址
const url = 'mongodb://localhost:27017'
// 定义数据库的名字
const dbName = 'comment3'

// mongoose的配置
// 如果版本比较高,如6.x版本,则可以省略这些配置
// mongoose.set('useCreateIndex', true)
// mongoose.set('useFindAndModify', true)

// 开始连接
mongoose.connect(`${url}/${dbName}`,{
    useNewUrlParser:true,
    useUnifiedTopology: true,
})

// 获取连接对象
const conn = mongoose.connection

// 监听错误
conn.on('error', err => {
    console.error('mongodb 连接出错', err)
})

// 导出mongoose
module.exports = mongoose

定义User Model

// User Model

const mongoose = require('../db/db')

// 定义User Schema(规则)
const UserSchema = mongoose.Schema({
    username: {
        type: String,
        required: true,//必须填写
        unique: true  //不能重复
    },
    password: String,
    age: Number,
    city: String,
    gender: {
        type: Number,
        default: 0 //0是保密,1是男, 2是女
    }
},{
    timestamps: true //时间戳
})

// 定义User Model
const User = mongoose.model('user', UserSchema)

// 导出User Model
module.exports = user

定义Comment Model

// Comment Model

const { model } = require('mongoose')
const mongoose = require('../db/db')

// 定义Comment Schema
const CommentSchema = mongoose.Schema({
    content:{
        type: String,
        required: true, //必需
    },
    username: String
})

// 定义Comment Model
const Comment = mongoose.model('comment',CommentSchema)

// 导出
module.exports = Comment

五、项目开发

前端代码介绍:(由于本次项目主要练习后端,前端代码将带过)

comment-fe是项目的前端代码,打开项目后要先使用npm i 去安装相应的依赖:留言板项目开发

跨域和跨域传递cookie:

前端允许跨域带 cookie需在ajax.js中设置:留言板项目开发

 服务端支持跨域在app.js中:留言板项目开发

 在onerror后面写如需跨域中间件:

留言板项目开发

接口开发和前后端联调:略

上一篇:数组与枚举


下一篇:Egg中使用egg-mongoose和常用的Mongoose 方法