本文,需要有一定MVC的基础
文件目录如下:
首先:我们需要先创建express框架,需要的插件有mongoose!
源代码:
在router文件夹下创建login.js文件主要
const express = require('express');//引入express模块
const router = express.Router();//创建一个路由
const loginController = require('../controller/loginController')//主要是逻辑部分的代码
/* GET home page. */
router.post('/', (req, res, next) => {
loginController.login({ req, res, next })//中间件逻辑部分
});
module.exports = router;//暴露接口
在view文件下创建login.ejs
<%- data%>//解析login.js传来的data数据并返回给前端
设置app.js文件添加如下代码:
var loginRouter = require('./routes/login')//引入路由配置文件
//app.use('路径',中间件)
app.use('/login', loginRouter);//路由级中间件的创建
model文件下中:
loginModel.js文件
/* Model数据处理部分
1.接口暴露
2.连接数据库.存储.判断数据 */
//res.render('login'{})数据部分
const dbs = require('../dbs');
const dbsModel = dbs[1902].login; //得到模型
const loginModel = {
login({ usename, password }) { //前端发来的usename,password
const loginEntity = new dbsModel();
loginEntity.usename = usename;
loginEntity.password = password;
loginEntity.save();
return {
data: JSON.stringify({
usename,
password
})
}
}
};
module.exports = loginModel;
针对login的逻辑操作,也就是login的C
loginController.js文件代码如下:
/* 针对login的逻辑操作,也就是login的C */
/* router.get('/', ()=>{
}) */ //路由get中间件逻辑部分
const loginModel = require('../model/loginModel')//引入暴露的文件
const loginController = {
login: ({ res, req }) => {
res.render('login', loginModel.login({...req.body }));//对象的扩展
}
};
module.exports = loginController;
dbs文件夹下的model文件:创建模型
loginModel.js文件如下:
/* 模型mongoose */
const mongoose = require('mongoose');
const { STUDENTS } = require('../schema/collectionNames') //引入集合名称
// const loginSchema = require('../schema/loginSchema');
// console.log(STUDENTS)
const loginModel = {
createLoginModel(loginSchema) { //创建模型的方法
//new mongoose.model('集合名字',骨架)
return new mongoose.model(STUDENTS, loginSchema)
}
};
module.exports = loginModel;
dbs文件夹下的schema文件:创建骨架
loginSchema.js文件如下:
const mongoose = require('mongoose');//引入mongoose模块
//创建骨架
const loginSchema = {
createLoginSchema() {
return new mongoose.Schema({
id: Number,//设置id类型
usename: String,
password: String
});
}
};
module.exports = loginSchema;
collectionNames.js文件主要用于数据的集合名称
// import { model } from "mongoose";
const mongoose = require('mongoose')
// 这里是集合的名称
// const collectionNames = {
// }
const STUDENTS = 'students' //数据库集合名称
module.exports = {
STUDENTS
}
connect.js文件:连接数据库
// 连接数据库
const dbsType = require('./dbsType');
const mongoose = require('mongoose');
const port = 27017;
const hostname = '127.0.0.1';
const connect = {
init() {
mongoose.connect(`mongodb://${hostname}:${port}/${dbsType[1902]}`, { useNewUrlParser: true })
}
};
module.exports = connect;
dbsType.js文件数据库名称集合
// 存储多个数据库
const dbsType = {
[1902]: 1902, //数据库名称
};
module.exports = dbsType;
index.js文件相当与一个主要文件,数据库功能在这里调用。
const connect = require('./connect');
//引入骨架
const loginSchema = require('./schema/loginSchema')
//引入模型
const loginModel = require('./model/loginModel');
//引入dbsType
const dbsType = require('./dbsType')
//创建模型
const loginM = loginModel.createLoginModel(loginSchema.createLoginSchema())
const dbs = {
[dbsType[1902]]: { //1902数据库
login: loginM
}
}
module.exports = dbs;
//执行init方法连接数据库
connect.init();
总结:controller文件夹主要是针对login的逻辑操作,也就是login的C,dbs文件夹主要是对数据库的操作主要有创建骨架,创建模型,数据库集合名称。routes文件夹主要是路由配置文件一个路由对应一个接口,