tllw

1、首先要确保使用node.js全局安装过express

      若未安装

       npm install –g express

            npm install –g express-generator

      确保有一个数据库

  

 

2、建立express项目

      express  mall-project(项目名为mall-project)

      修改package.json

             在"dependencies"添加"mysql": "latest"依赖

      npm i

      npm start

3、修改目录如图

4、修改代码

//mysql.js
// MySQL数据库联接配置封裝
var mysql = {
    host: \'127.0.0.1\',
    user: \'root\',
    password: \'tll456456\',
    database: \'test\',
    port: 3306
};
module.exports = mysql;
//handel.js
/*
    数据增删改查模块封装
    req.query 解析GET请求中的参数 包含在路由中每个查询字符串参数属性的对象,如果没有则为{}
    req.params 包含映射到指定的路线“参数”属性的对象,如果有route/user/:name,那么“name”属性可作为req.params.name
    req.body通常用来解析POST请求中的数据
     +req.query.id 可以将id转为整数
 */
// 引入mysql
var mysql = require(\'mysql\');
// 引入mysql连接配置
var mysqlconfig = require(\'../config/mysql\');
// 引入连接池配置
var poolextend = require(\'./poolextend\');
// 引入SQL模块
var sql = require(\'./sql\');
// 引入json模块
var json = require(\'./json\');
// 使用连接池,提升性能
var pool = mysql.createPool(poolextend({}, mysqlconfig));
var userData = {
    add: function(req, res, next) {
        pool.getConnection(function(err, connection) {
            var param = req.query || req.params;
            connection.query(sql.insert, [param.id, param.name, param.age], function(err, result) {
                if (result) {
                    result = \'add\'
                }
                // 以json形式,把操作结果返回给前台页面
                json(res, result);
                // 释放连接 
                connection.release();
            });
        });
    },
    delete: function(req, res, next) {
        pool.getConnection(function(err, connection) {
            var id = +req.query.id;
            connection.query(sql.delete, id, function(err, result) {
                if (result.affectedRows > 0) {
                    result = \'delete\';
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    },
    update: function(req, res, next) {
        var param = req.body;
        if (param.name == null || param.age == null || param.id == null) {
            json(res, undefined);
            return;
        }
        pool.getConnection(function(err, connection) {
            connection.query(sql.update, [param.name, param.age, +param.id], function(err, result) {
                if (result.affectedRows > 0) {
                    result = \'update\'
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    },
    queryById: function(req, res, next) {
        var id = +req.query.id;
        pool.getConnection(function(err, connection) {
            connection.query(sql.queryById, id, function(err, result) {
                if (result != \'\') {
                    var _result = result;
                    result = {
                        result: \'select\',
                        data: _result
                    }
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    },
    queryAll: function(req, res, next) {
        pool.getConnection(function(err, connection) {
            connection.query(sql.queryAll, function(err, result) {
                if (result != \'\') {
                    var _result = result;
                    result = {
                        result: \'selectall\',
                        data: _result
                    }
                } else {
                    result = undefined;
                }
                json(res, result);
                connection.release();
            });
        });
    }
};
module.exports = userData;
//json.js
//封装接送模块
var json = function(res, result) {
    if (typeof result === \'undefined\') {
        res.json({
            code: \'1\',
            msg: \'操作失败\'
        });
    } else if (result === \'add\') {
        res.json({
            code: \'200\',
            msg: \'添加成功\'
        });
    } else if (result === \'delete\') {
        res.json({
            code: \'200\',
            msg: \'删除成功\'
        });
    } else if (result === \'update\') {
        res.json({
            code: \'200\',
            msg: \'更改成功\'
        });
    } else if (result.result != \'undefined\' && result.result === \'select\') {
        res.json({
            code: \'200\',
            msg: \'查找成功\',
            data: result.data
        });
    } else if (result.result != \'undefined\' && result.result === \'selectall\') {
        res.json({
            code: \'200\',
            msg: \'全部查找成功\',
            data: result.data
        });
    } else {
        res.json(result);
    }
};
module.exports = json;
//poolextent.js
// 连接池扩展封装
var poolextend = function(target, source, flag) {
    for (var key in source) {
        if (source.hasOwnProperty(key)) {
            flag ? (target[key] = source[key]) : (target[key] === void 0 && (target[key] = source[key]));
        }
    }
    return target;
}
module.exports = poolextend;
//sql.js
// SQL语句封裝
var user = {
    insert:\'INSERT INTO user(id, name, age) VALUES(?,?,?)\',
    update:\'UPDATE user SET name=?, age=? WHERE id=?\',
    delete: \'DELETE FROM user WHERE id=?\',
    queryById: \'SELECT * FROM user WHERE id=?\',
    queryAll: \'SELECT * FROM user\'
};
module.exports = user;
//router/index.js
var express = require(\'express\');
var router = express.Router();
var user = require(\'../modules/handle\');
/* GET users listing. */
router.get(\'/\', function(req, res, next) {
  res.render(\'index\', { title: \'SQL for MySQL\' });
});
router.get(\'/addUser\', function(req, res, next) {
    user.add(req, res, next);
});
router.get(\'/queryAll\', function(req, res, next) {
    user.queryAll(req, res, next);
});

router.get(\'/query\', function(req, res, next) {
    user.queryById(req, res, next);
});
router.get(\'/deleteUser\', function(req, res, next) {
    user.delete(req, res, next);
});
router.get(\'/update\', function(req, res, next) {
    res.render(\'update\');
});
router.post(\'/updateUser\', function(req, res, next) {
    user.update(req, res, next);
});
module.exports = router;
//index.jade
extends layout

block content
  h1= title
  p
  a(class={active: currentUrl === \'/\'} href=\'/queryAll\')     数据查询

  p
  a(class={active: currentUrl === \'/\'} href=\'/query?id=1\')     定向查询

  p
  a(class={active: currentUrl === \'/\'} href=\'/addUser?id=0&name=xyz&age=18\')    数据插入

  p
  a(class={active: currentUrl === \'/\'} href=\'/update\')   数据更新

  p
  a(class={active: currentUrl === \'/\'} href=\'/deleteUser?id=0\')    数据删除
  p
//layout.jade
doctype html
html
  head
    title= title
    link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')
  body
    block content
//update.jade
extends layout
block content
    h1 更新用户资料
    form(method=\'post\', action=\'updateUser\')
        div.form-row
            label
                span ID:
                input(type=\'text\',name=\'id\')
        div.form-row
            label
                span name:
                input(type=\'text\',name=\'name\')
        div.form-row
            label
                span age:
                input(type=\'text\',name=\'age\')
        div.form-row
            input(type=\'submit\')

5、重启

  npm start

 

分类:

技术点:

相关文章:

  • 2021-11-07
  • 2021-12-10
  • 2021-12-04
  • 2021-07-03
  • 2022-01-02
  • 2021-09-01
  • 2019-09-16
猜你喜欢
  • 2022-12-23
  • 2021-08-08
  • 2021-11-22
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案