基于Nodejs的mongoose + RMVC + DBS 模块封装

本文,需要有一定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文件夹主要是路由配置文件一个路由对应一个接口,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值