教师学生登录nodejs

一,目录

npm config set registry https://registry.npmmirror.com

npm i express@4.17.1

npm i -y

npm install
npm i cors

npm i mysql
npm i jsonwebtoken

npm i express-jwt@5.3.3

npm i joi express-joi
npm i bcryptjs

二,config中的secret.js模块代码

exports.secret = "hahaha"

三,db中的index.js(管理数据库的)代码

const mysql = require('mysql')

const db = mysql.createPool({
    host: "127.0.0.1",
    user: 'root',
    password: '123456',
    port:"3308",
    database: 'db_student'
})


module.exports = db

四,router中的student.js代码

const express = require('express')

const router = express.Router()
const student_handler = require('../router_handler/student_handler')
router.get('/getStudents', student_handler.getStudents)

router.post('/addStudent', student_handler.addStudents)
router.get('/getStudentdata/:id', student_handler.getId)
router.put('/editStudent/:id',student_handler.editStudent)
router.delete('/delStudent/:id', student_handler.delStudent)
module.exports = router

router中的teacher.js代码

const express = require("express")
const router = express.Router()
const teacher_handler = require('../router_handler/teacher_handler')

router.post('/regUser', teacher_handler.regUser)
router.post('/login', teacher_handler.login)

module.exports = router

五,router_handler中的student_handler.js代码

const { query } = require('express')
const db = require('../db/index')


exports.getStudents = (req, res) => {
    let sql = 'SELECT s_id,s_name,gender,teachers.teachername FROM students,teachers WHERE students.t_id=teachers.t_id;'
    db.query(sql, (err, rst) => {
        if (err) return res.send({
            status: 201,
            msg: "sql执行错误"
        })
        if (rst.length == 0) {
            return res.send({
                status: 500,
                msg: '获取学生列表失败'
            })
        }

        res.send({
            status: 200,
            msg: '获取学生列表成功',
            data: rst
        })
    })
}


exports.addStudents = (req, res) => {
    let student = req.body
    if(!student.s_name||!student.gender||!student.t_id){
        return res.send({
            status:201,
            msg:'姓名或者性别或者老师id不能为空'
        })
    }

    let sql = "select * from students where s_name=?"

     db.query(sql, student.s_name, (err, rst) => {
        if (err) return res.send({
            status: 201,
            msg: 'sql执行错误'
        })

        if (rst.length > 0) {
            return res.send({
                status: 204,
                msg: "添加的学生已经存在"
            })
        }

        let sql2 = "insert into students set ?"
        db.query(sql2, student, (err, rst) => {
            if (err) return res.send({
                status: 201,
                msg: 'sql执行错误'
            })

            if (rst.affectedRows != 1) return res.send({
                status: 500,
                msg: '添加失败'
            })

            res.send({
                status: 200,
                msg: "添加成功",
            })
        })
    })
}






exports.getId = (req, res) => {
    console.log(req)
    let sql = 'SELECT * FROM students WHERE s_id=?'

    db.query(sql, req.query.s_id, (err, rst) => {
        console.log(rst)
        if (err) return res.send({
            status: 201,
            msg: "sql执行错误"
        })


        if (rst.length == 0) return res.send({
            status: 500,
            msg: "获取失败"
        })
        res.send({
            status: 200,
            msg: '添加获取成功',
            data:rst
        })

        
    })
}

exports.editStudent = (req, res) => {
    console.log(req.query)
     let newdate =req.query
     if(!newdate.s_name||!newdate.gender||!newdate.t_id||!newdate.s_id){
        return res.send({
            status:203,
            msg:'字段未写全(姓名,性别,老师ID,学生ID)'
        })
     }
    let sql = "update students set s_name=? ,gender=?,t_id=? where s_id=?"
    db.query(sql, [newdate.s_name, newdate.gender, newdate.t_id, newdate.s_id], (err, rst) => {
        if (err) return res.send({
            status: 201,
            msg: 'sql执行错误'
        })
        if (rst.affectedRows !==1) return res.send({
                status: 500,
                msg: '修改失败'
            })

        res.send({
            status: 200,
            msg: '修改学生信息成功',
        })
    })
}









exports.delStudent = (req, res) => {
    let id = req.query.s_id
    if (!id) return res.send({
        status: 203,
        msg: '未指定要删除的学生Id'
    })
    let sql = 'DELETE FROM students WHERE s_id=?'

    db.query(sql, id, (err, rst) => {
        if (err) return res.send({
            status: 201,
            msg: "sql执行错误"
        })


        if (rst.affectedRows == 0) return res.send({
            status: 500,
            msg: "删除失败"
        })
        res.send({
            status: 200,
            msg: '删除成功'
        })
    })
}

router_handler中的teacher_handler.js代码

const jwt = require('jsonwebtoken')

const db = require('../db/index')
const config = require("../config/secret")
const bcrypt = require("bcryptjs")
exports.regUser = (req, res) => {
    let teacher = req.body
    if(!teacher.teachername||!teacher.password){
        return res.send({
            status:201,
            msg:'用户名或密码不能为空!'
        })
    }

    let sql = "select * from teachers where teachername=?"

    db.query(sql, teacher.teachername, (err, rst) => {
        if (err) return res.send({
            status: 201,
            msg: 'sql执行错误'
        })

        if (rst.length > 0) {
            return res.send({
                status: 202,
                msg: "用户名已存在"
            })
        }

        let sql2 = "insert into teachers set ?"
        teacher.password = bcrypt.hashSync(teacher.password, 10)
        db.query(sql2, teacher, (err, rst) => {
            if (err) return res.send({
                status: 201,
                msg: 'sql执行错误'
            })

            if (rst.affectedRows != 1) return res.send({
                status: 203,
                msg: '注册失败'
            })

            res.send({
                status: 200,
                msg: "注册成功",
            })
        })
    })
}



exports.login = (req, res) => {
    let teacher = req.body
    if(!teacher.teachername||!teacher.password){
        return res.send({
            status:201,
            msg:'用户名或密码不能为空!'
        })
    }
    let sql = 'select * from teachers where teachername=?'
    db.query(sql, [teacher.teachername], (err, rst) => {
        if (err) return res.send({
            status: 201,
            msg: "sql执行错误"
        })


        if (rst.length == 0) {
            return res.send({
                status: 203,
                msg: '用户名或密码错误'
            })
        }
        let compare = bcrypt.compareSync(teacher.password, rst[0].password)
        if (!compare) {
            return res.send({
                status: 500,
                msg: '登录失败'
            })
        }
        const token = jwt.sign({ teachername: teacher.teachername }, config.secret, { expiresIn: '10h' })
        res.send({
            status: 200,
            msg: "登录成功",
            token: "Bearer " + token
        })
    })
}

六,app.js代码

const express=require("express")
const cors=require('cors')
const app=express()
const teacher=require('./router/teacher')
const students=require('./router/student')
const scret=require("./config/secret")
const expressjwt= require("express-jwt")
app.use(cors())
app.use(express.urlencoded({extended:false}))
app.use(expressjwt({ secret: scret.secret }).unless({ path: [/^\/api\/teacher\//] }))

app.use('/api/teacher',teacher)
app.use('/api/student',students)
app.use((err, req, res, next) => {
    if (err.name == "UnauthorizedError")
        return res.send({
            status: 501,
            msg: 'token验证失败'
        })

    res.send({
        status: 503,
        msg: '未知错误'
    })
})
app.listen(3008,()=>{
    console.log("server running at http://127.0.0.1:3008")
})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值