学生档案信息管理之模板引擎的应用

实现学生信息添加功能
 在模板的表单中指定请求地址与请求方式
 为每一个表单项添加name属性
 添加实现学生信息功能路由
 接收客户端传递过来的学生信息
 将学生信息添加到数据库中
 将页面重定向到学生信息列表页面

本项目开发按着项目开发的流程:views文件夹下是模板 model文件夹下是数据库的操作文件 分为接口文件和创造文件 route文件夹是路由的获取代码  public 放公共css文件  app.js为主文件

app.js

// 引入http模块
const http = require('http');
// 引入模板引擎
const template = require('art-template');
// 引入path模块
const path = require('path');
// 引入静态资源访问模块
const serveStatic = require('serve-static');//返回一个方法
// 引入处理日期的第三方模块
const dateformat = require('dateformat');

const router = require('./route/index');
// 实现静态资源访问服务
const serve = serveStatic(path.join(__dirname, 'public'))//返回一个方法

// 配置模板的根目录
template.defaults.root = path.join(__dirname, 'views');
// 处理日期格式的方法
template.defaults.imports.dateformat = dateformat;

// 数据库连接
require('./model/connect');

// 创建网站服务器
const app = http.createServer();
// 当客户端访问服务器端的时候
app.on('request', (req, res) => {
    // 启用路由功能
    router(req, res, () => {})
    // 启用静态资源访问服务功能
    serve(req, res, () => {})
});
// 端口监听
app.listen(3000);
console.log('服务器启动成功');

数据库moudel文件夹下代码

user.js

const mongoose = require('mongoose');
// 创建学生集合规则
const studentsSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 10
    },
    age: {
        type: Number,
        min: 10,
        max: 25
    },
    sex: {
        type: String
    },
    email: String,
    hobbies: [ String ],
    collage: String,
    enterDate: {
        type: Date,
        default: Date.now
    }
});
// 创建学生信息集合
const Student = mongoose.model('Student', studentsSchema);
// 将学生信息集合进行导出
module.exports = Student;

connect.js

const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost/wrj', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(() => console.log('数据库连接失败'))

路由代码

// 引入router模块
const getRouter = require('router');
// 获取路由对象
const router = getRouter();
// 学生信息集合
const Student = require('../model/user');
// 引入模板引擎
const template = require('art-template');
// 引入querystring模块
const querystring = require('querystring');

// 呈递学生档案信息页面
router.get('/add', (req, res) => {
    let html = template('index.art', {});
    res.end(html);
})

// 呈递学生档案信息列表页面
router.get('/list', async (req, res) =>{
    // 查询学生信息
    let students = await Student.find();
    console.log(students);
    let html = template('list.art', {
        students: students
    })
    res.end(html)
})
// 实现学生信息添加功能路由
router.post('/add', (req, res) => {
    // 接收post请求参数
    let formData = '';
    req.on('data', param => {
        formData += param;
    });
    req.on('end', async () => {
        await Student.create(querystring.parse(formData))
        res.writeHead(301, {
            Location: '/list'
        });
        res.end()
    })
});

module.exports = router;

猜你喜欢

转载自www.cnblogs.com/treasurea/p/11260504.html