使用【node+mogodb】实现后端登录注册api接口

发布于:2022-12-20 ⋅ 阅读:(499) ⋅ 点赞:(0)

引言

        作为前端程序员,掌握前端技术是远远不够的,随着互联网技术的发展,前端程序员也要懂得一些后端知识,未来能够成为一名全栈工程师。

        下面我们使用nodejs+mongodb数据库来实现登录,注册api接口

操作步骤

一、开启mongodb服务

        打开文件夹到指定目录:D:\mongodb\bin(此路径作为参考)

        在此路径下打开cmd窗口,并执行 mongod -- dbpath D: \mongodb \data,显示以下语句,则表示mongodb启动成功

二、如何创建node服务器

        连接mongodb数据库,新建一个server文件夹作为服务器,为了规范代码,在文件夹建立如图所示文件夹

安装相关第三方模块

    "express": "^4.18.1",
    "express-jwt": "^7.7.5",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^6.6.0",
    "nodemon": "^2.0.19"

db/index,js        连接数据库

// 连接数据库
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/blog',{useNewUrlParser:true,useUnifiedTopology:true})
//2.连接成功
mongoose.connection.on('connected',function(){
    console.log('连接成功:','mongodb://127.0.0.1:27017/blog');
})
//3.连接失败
mongoose.connection.on('error',function(err){
    console.log('连接错误:',err);
})
//4.断开连接
mongoose.connection.on('disconnection',function(){
    console.log('断开连接');
})
module.exports = mongoose;

models/userModel.js        创建 user 模型

var mongoose = require('mongoose');
var userSchema = require('../schemas/userSchema');

//创建 user 模型 ( 需要使用 user 表结构 )
module.exports = mongoose.model('User', userSchema, 'users' );

router/user        创建子路由,用于编写api接口

var express = require('express');
var jwt = require('jsonwebtoken');

//创建express子路由
var router = express.Router();

//导入User模型对象, 用来处理用户的登陆
var userModel = require("../models/userModel")

//api接口,处理注册用户的请求
router.post('/register', (req, res) => {
    //req 请求对象
    console.log('req.body', req.body);
    var { phone, pass } = req.body;
    //查询用户是否存在
    userModel.find({ phone }, (err, data) => {
        if (data.length != 0) { //用户存在
            res.send({ code: 400, msg: "用户已存在,注册失败!" });
        } else { //用户不存在, 插入新用户到数据表中
            userModel.insertMany({phone, pass}, (err) => {
                if (!err) { //如果没有出错
                    res.send({ code: 200, msg: "注册成功!" });
                }
            })
        }
    })
})

//api接口,处理用户登陆的请求
router.get('/login', (req, res) => {
    //req 请求对象 , 从 req.query 获取get参数
    //res 响应对象 , 通过 res.send 发送数据到客户端(浏览器)
    console.log('req.query', req.query);

    var { phone, pass } = req.query;
    //查询用户是否存在
    userModel.find({phone,pass }, (err, data) => {
        if (data.length == 1) { //用户存在,登陆成功
            var token = jwt.sign({ phone }, 'nodejs', { algorithm: 'HS256', expiresIn: '1h' });
            res.send({
                code: 200,
                msg: "登陆成功!",
                token
            });
        } else { //用户不存在,登陆失败
            res.send({ code: 400, msg: "登陆失败!" });
        }
    })
})

module.exports = router;

schemas/userSchema.js        用于创建表结构

var mongoose = require('mongoose');

//创建 user 表结构 并抛出
module.exports = mongoose.Schema({
    phone: String,
    pass: String
})

server        node服务器的入口文件,也是启动服务的根文件

//1.引入express模块
var express = require('express');
var expressjwt = require('express-jwt').expressjwt
//连接mongodb数据库
require("./db/index.js")
//2.创建express实例对象
var app = express();
//处理post参数
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
//设置中间件 验证token的有效性
app.use(expressjwt({
    secret: 'nodejs',
    algorithms: ['HS256']
}).unless({
    path: [ //接口白名单, 这里的接口时免除token验证的
        '/api/user/login',
        '/api/user/register'
    ]
}))
var userRouter = require('./router/user')
//应用 用户的 子路由
app.use( "/api/user", userRouter )
//3.监听端口
app.listen(4000, () => {
    console.log('服务器运行在 http://localhost:4000');
});

        至此,我们就搭建好了一个服务器,可以实现登录和注册,更多的功能持续开发中。。。

        如果你对node感兴趣,也期望我们一起学习进


网站公告

今日签到

点亮在社区的每一天
去签到