阶段五-node.js + mysql-个人学习字典

284 阅读3分钟

注意事项: 一:自定义属性规范 data-mainplanname="<%= item.mainPlanName %>"

自定义属性data-mainplanname,不能有大写,否则无法获取到值

获取值:
  $('.update').click(function () {
   var updateMainPlanName  =  $(this).data('mainplanname'); 
  })

二:数据库信息: db:user table1:admin table2:bannerLists table3:plan

image.png

三:淘宝镜像:npm install -g cnpm --registry=registry.npm.taobao.org

1.cnpm-v:查看版本
2.cnpm install xxx : 把xxx模块下载到当前目录下

****简写:cnpm i jquery
3.下载方式
cnpm install xxx -g :全局
cnpm install  xxx -S:局部,生成环境 (以后我们下载局部基本都用-S)
cnpm install  xxx -D:局部,开发环境

准备工作:

1》下载mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 
2》工具 :nacicat premium 
3》node连接数据库 
a>在目录中下载mysql包 npm install mysql 
b>引入mysql 
c>配置mysql信息 
var mysql = require('mysql');
var connection = mysql.createConnection({
    host : '主机名', user : '用户名', password : '密码',
    database : '库名称', port : '端口号' }); 
    connection.connect(); 
    connection.query(
    'select * from 表名称', 
    function (error, results, fields) { 
        if (error) throw error; 
        console.log(results) 
    }); 
connection.end();

二:express

1》express:基于node.js的web应用开发框架 
2》目录结构 
bin www ===》启动文件【入口文件】 
app.js ===》全局配置文件 
            新建一个一级目录的模块:比如新建一个名为(admin)
            var adminRouter = require('./routes/admin');
            app.use('/admin', adminRouter);
            
routers ===》路由的配置
            这里配置新建的目录的路由信息(一级路由|二级路由),要新建一个admin.js 文件
            var express = require('express');
            var router = express.Router();

            /*一级路由配置 */
            router.get('/', function(req, res, next) {
                res.render('admin');
            });

            //二级路由配置
            router.get('/login',function (req,res,next){
                res.render('login',{这里可以以key:val形式传参到页面})
            })
            module.exports = router;
            
views ===》页面 
            在这里创建(一级|二级)路由的ejs页面,
            重启服务器 就可以跟根据配置的路由访问页面了(例如):
            一级路由的访问:http://localhost:3000/admin
            二级页面的访问:http://localhost:3000/admin/login
            
public ===》静态资源 【css、img、js】
            <%= title %>

三:MySQL

1》mysql查询数据  
    select * from 表名称  查询所有
    select * from 表名称 where userName=? and userPwd=? where==》条件 
    connection.query('select * from 表名称 where userName=? and userPwd=?',
    [第一个?,第二个?],
    (err,results,fields)=>{ })

1》mysql增 insert into 表名称 value (100,123,456)
2》删除:  

    var express = require('express');
    var router = express.Router();
    var db = require('../sql.js');
    /* GET home page. */
    router.get('/', function(req, res, next) {

        var id = req.query.id;
        db.query(`delete from plan where id=${id}`,function(err,data){

            db.query('select * from plan',function (err,data) {

                var pager = {};
                //当前第几页,默认第一页
                pager.pageCurrent = 1;
                //总的记录数
                pager.maxNum = data.length;
                //每页显示多少条记录
                pager.pageSize = 5;
                //一共有多少页
                pager.pageCount = parseInt(Math.ceil(pager.maxNum / pager.pageSize));
                //修改了传递的数据数量
                var dataList = data.slice( (pager.pageCurrent-1) * pager.pageSize , (pager.pageCurrent-1) * pager.pageSize + pager.pageSize );

                if( err ){
                    throw err;
                }else{
                    res.render('planLists',{
                        planLists:dataList,
                        pager:pager
                    })
                }

            })

        })

    });


    module.exports = router;


   3》修改: 
       var express = require('express');
        var router = express.Router();
        var db = require('../sql.js');
        var multiparty = require('multiparty');

    /* GET home page. */
    router.post('/', function(req, res, next) {

        var form = new multiparty.Form();
        //上传的图片需要保存某一个目录,目录必须存在
        form.uploadDir = './public/upload';
        form.parse(req,function(err,fields,files){

            // console.log(fields)
            // console.log(files)
            var upid = fields.upid[0];
            var planName = fields.mainPlanName[0]; // 课程名称
            console.log(planName)
            var mainPlanName = fields.mainPlanName[1]; // 主课程名称
            let planPath = files.planPath[0].path; // 图片路径
            var planType = fields.planType[0]; // 授课类型
            var planTime = fields.planTime[0]; // 授课时间

            db.query(`update plan set id=?,planName=?,mainPlanName=?,planPath =? ,planType=?,planTime=? where id=${upid}`,[upid,planName,mainPlanName,planPath,planType,planTime],function(err,data){

                if( err ){
                    throw err;
                }else{
                    db.query('select * from plan',function (err,data) {

                        var pager = {};
                        //当前第几页,默认第一页
                        pager.pageCurrent = 1;
                        //总的记录数
                        pager.maxNum = data.length;
                        //每页显示多少条记录
                        pager.pageSize = 5;
                        //一共有多少页
                        pager.pageCount = parseInt(Math.ceil(pager.maxNum / pager.pageSize));
                        //修改了传递的数据数量
                        var dataList = data.slice( (pager.pageCurrent-1) * pager.pageSize , (pager.pageCurrent-1) * pager.pageSize + pager.pageSize );

                        if( err ){
                            throw err;
                        }else{
                            res.render('planLists',{
                                planLists:dataList,
                                pager:pager
                            })
                        }
                    })
                }

            })

        })

    });


    module.exports = router;
    

五:阶段考核:

1、产品是什么? 这次我们做的是一个web后管理系统,叫:小鹿线后台管理, 2、用了哪些技能点和接入的东西? 采用 express+node.js+mysql做数据管理,一共有三个表,分别是用户信息表,banner图表,开班计划表 3、具体实现哪些功能? 下面我说一下我负责的功能模块分别是 :首页的登录,banner图,开班计划 列表数据渲染。

先说一下登录:通过req.body获取用户输入的用户名和密码,通过mysql查询用户信息表,查到表中的用户名和密码,进行比对,如果能查到并且信息一致,就渲染render 进入一个后台首页。如果信息不一致就提示用户重新登录。 banner图和开班计划有下拉选择查找,输入名称模糊查找, 还有:添加,修改,删除,翻页功能,这里涉及到3个表,都是通过操作不同的数据库来让数据实现添加修改和删除。 翻页功能主要是获取每个表的数据,定义每页默认5条数据,在判断一共展示多少页,实现首页,尾页,上一页和下一页切换页数的基本功能。