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='用户管理';
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
![](https://img-blog.csdnimg.cn/00151904eb0144a5a5fb0f0787575ce7.png)
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、下次继续=======>