express & nodejs & mysql

nodejs学习

1、express创建Node服务端项目==>
  • 安装express 、快速应用生成器

    npm install express express-generator -g
    
  • cd进入你项目所要放置的文件夹,创建Node服务端:express 项目名称

    express nodeServer
    
  • cd项目文件夹,安装依赖、启动项目

    cd nodeServer 
    npm install 
    npm start
    

    目录:结果:

2、安装数据库&可视化==>及其使用
  • 数据库建新表

    1、可以在navicat里右键点击数据库的命令列界面执行sql语句创建表

    2、可以navicat里可视化创建表,

    3、可以在mysql命令行执行sql语句

    CREATE TABLE user (
    id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
    name varchar(50) NOT NULL COMMENT '用户名',
    password varchar(100) DEFAULT NULL COMMENT '密码',
    mobile varchar(100) DEFAULT NULL COMMENT '手机号',
    PRIMARY KEY (id),
    UNIQUE KEY name (name)
    ) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COMMENT='用户管理';
    
  • Node.js 连接 MySQL

npm install mysql --save
  • 测试是否成功连接数据库:新建一个js文件,在哪都行
var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',//数据库地址
  user     : 'root',//数据库用户名
  port     : 3306,//数据库端口号
  password : '123456',//数据库用户密码
  database : 'test'// 数据库名字
});
 
connection.connect();
 
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});
  • 执行ts文件,路径为相对根目录路径
node ./xxx.js
3、封装
var mysql = require('mysql');
const {dbconfig} = require('../config/index');
class Db{
    constructor(){
        this.connection = mysql.createConnection(dbconfig);
        this.connection.connect();
    }
    /**
     * 描述
     * @date 2021-12-04
     * @param {any} sql 要执行的SQL语
     * @resolve 非null有结果, null代表无结果
     */
    select(sql){
        return new Promise((resolve, reject) => {
            this.connection.query(sql||'SELECT * FROM user', [],function (error, results, fields) {
                if (error) {
                    console.error(error);
                    resolve(null);
                }else {
                    if (results.length > 0) {
                        console.log(results);
                        resolve(results)
                    } else {
                        resolve(null);
                    }
                }
            });
        })
    }
    /**
     * 描述
     * @date 2021-12-04
     * @param {any} sqlStr
     * @resolve 非null有结果, null代表无结果
     */
    delete(sqlStr) {
        return new Promise((resolve, reject) => {
            this.connection.query(sqlStr, [], function (err, results) {
                if (err) {
                    console.error(err);
                    resolve(null);
                } else {
                    if (results.affectedRows > 0) {
                        resolve(true);
                    } else {
                        resolve(null);
                    }
                }
            });
        })
    }
    /**
     * 描述
     * @date 2021-12-06
     * @param {any} tableName 要执行插入的表名
     * @param {any} obj 插入对象
     * @resolve true代表插入成功, 字符串代表插入失败
     */
    insert(tableName,obj){
        return new Promise((resolve, reject) => {
            let sqlStr = '(';
            if(obj !== undefined && typeof obj==='object' && Object.keys(obj).length>0){
                for (const key in obj) {
                    sqlStr += key +' , '
                }
                sqlStr = sqlStr.substr(0, sqlStr.length - 3);
                sqlStr += " ) VALUES ( ";
                for (const key in obj) {
                    sqlStr += typeof obj[key] === 'number' ?obj[key]:"'"+obj[key]+"'" + ' , ';
                }
                sqlStr = sqlStr.substr(0, sqlStr.length - 3);
                sqlStr += " ) ";
            }
            this.connection.query(`INSERT INTO` + "`"+tableName+ "`"+sqlStr, [], function (err, results) {
                if (err) {
                    console.error(err);
                    resolve(null);
                } else {
                    console.log(results);
                    if (results.affectedRows > 0) {
                        resolve(true);
                    } else {
                        resolve(null);
                    }
                }
            });
        })
    }
    /**
     * 描述
     * @date 2021-12-06
     * @param {any} tableName 要执行更新的表名
     * @param {any} obj 更新后对象
     * @param {any} where 要执行更新的数据条件
     * @resolve true代表更新成功,
     */
    update(tableName,obj,where){
        return new Promise((resolve, reject) => {
            let sqlStr = `UPDATE ${tableName} SET `;
            if(obj !== undefined && typeof obj==='object' && Object.keys(obj).length>0){
                for (const key in obj) {
                    sqlStr += key + ' = '+ (typeof obj[key]==='number'?obj[key] : "'"+obj[key]+"'" ) +' , '
                }
                sqlStr = sqlStr.substr(0, sqlStr.length - 3);
                // console.log(sqlStr);
            }
            sqlStr += where
            console.log(sqlStr);
            this.connection.query(sqlStr, [], function (err, results) {
                if (err) {
                    console.error(err);
                    resolve(null);
                } else {
                    console.log(results);
                    if (results.affectedRows > 0) {
                        resolve(true);
                    } else {
                        resolve(null);
                    }
                }
            });
        })
    }
}
// 验证
// var dbclass = new Db()//实例化
//1、验证select
// dbclass.select('SELECT * FROM user')
//2、验证insert
// dbclass.insert('user',{ name: 'jerry',  password: '123456', mobile: '18339160000' })
//3、验证update
// dbclass.update('user', { name: 'rose',password: '123456',mobile: '18339160000'}, ` WHERE id = 34`);

module.exports = new Db();

在这里插入图片描述
在这里插入图片描述

4、下次继续=======>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值