express之使用中间件

本文介绍如何使用Node.js搭建用户信息接口,并通过Express框架实现与MongoDB的集成,包括用户信息的获取、注册及登录等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这篇博文的基础上

https://blog.youkuaiyun.com/wangrong111222/article/details/80664823

要把各类信息的接口解耦; 分类;

现在来作用户的信息类的接口

user.js

const express =require("express");
const Router=express.Router();//使用express路由对象进行挂载;

Router.get("/info",function (req,res) {
   return res.json({code:1})
})

module.exports= Router; //输出router

这里使用 express的 Router方法拿到 这个路由对象;

使用这个路由对象来 设置路径 并且输出 

在server.js

const userRouter =require("./user");//引入 user
引入user.js;

const app=express();
app.use("/user",userRouter)//开启一个中间件,定义子路由

使用app.use来开启中间件,第一个参数 是路径,第二个要定义的子路由;

访问的话就是localhost:9093/user/info 就可以拿到 {code:1}

////////////

这边和mongodb的操作 ,要单独分离出来一个模块 ,当前就是model.js

const DB_URL="mongodb://127.0.0.1:27017/imocc-chat";
const mongoose=require('mongoose');
mongoose.connect(DB_URL);

//定义字段模型
const models={
    user:{
           "user":{"type":String,"require":true},
           "psw":{"type":String,"require":true},
           "type":{"type":String,"require":true}
    },
    chat:{
    }
};
//把modles里的字段以modle.key的形式全部注册到mongodb
for (let m in models){
    mongoose.model(m,new mongoose.Schema(models[m]))
}
//输出一个对象,包含着 可以通过 key名来读取mongodb相连的 方法属性;
module.exports={
    getModel:function (name) {
        return mongoose.model(name);
    }
}

然后在server/user.js下来引入这个mongodb;

const models=require("./model");
const User=models.getModel("user");

直接拿到关于user字段的相关内容;

Router.get("/list",function (req,res) {
    User.find({},function (err,doc) {
        return res.json(doc);
    })
});

 放入筛选条件后 以json格式输出内容;

为了以后能使用post来传输数据 到mongodb ,这里要安装一个包

cnpm i --save body-parser

装好以后

const badyParser=require("body-parser");
const cookieParser=require("cookie-parser");

在server.js里引入 这俩 插件  cookie是之前就装了的

使用他们

app.use(cookieParser());
app.use(badyParser.json());

这样 app的接口就可以解析 cookie和post 过来的json了;

现在先注册post方法

//注册post方法
Router.post("/register",function (req,res) {
    //有了body-parser就可以拿到post的参数,解构出来;
    const {user,psw,type}=req.body;
    //先查询 用户名是否存在 
    User.findOne({user},function (err,doc) {
        if(doc){
            return res.json({code:1,msg:"用户名字重复"})
        }
        //把用户的字段存进mongodb
       User.create({user,psw,type},function (e,d) {
           if(e){
               return res.json({code:1,msg:"后段报错,老铁激动吗?"})
           }
           return res.json({code:0})
       })

    })

})

//登陆模块实现

//注册登陆post 方法;
Router.post("/login",function (req,res) {
    const {user,psw}=req.body;

    // 把你不想输出到页面的值,在第二个入参设置为0
    User.findOne({user:user,psw:psw},{psw:0,__v:0,_id:0},function (e,d) {
        if(!d){
            return res.json({code:1,msg:"user/psw error"})
        }
        return res.json({code:0,data:d})
    })

})

 // 把你不想输出到页面的值,在第二个入参设置为0
注意一下 注释内容


简单说下   密码加密

md5是非对称加密,就是单向加密,而且具有雪崩效应; 符合基本的密码学规范;

密码在入库的时候需要加密 md5;但是这个不够,有彩虹表可以撞库;所以需要加严;

所谓加严就是自己在md5的基础上继续改造;比如基本的密码值加上随机值加密后再来一次加密 ;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值