node笔记(持续更新)
-
使用cmd创建nodejs的项目
1)打开控制命令行, 进入到你创建项目的文件夹。
2)mkdir myNode --创建一个myNode文件夹
3)cd myNode
4) npm init --初始化工程
此时需要填写一些项目信息,可以直接回车使用默认的。
-
连接mysql
var mysql = require('mysql');
var myslconnection = mysql.createConnection({
host: 'localhost',//mysql服务器ip
user: 'root',//mysql登录名
password: 'hll123',//mysql登录密码
database: 'test',//mysql数据库名
charset: 'utf8mb4'//编码
});
myslconnection.connect();//连接数据库
myslconnection.query('set names utf8mb4');//设置数据库的编码
mysql的增删改查都是用上面的这条语句;
------加表 var created = "create table if not exists `" + tbName + "` like `sdb_votes`" myslconnection.query(created, function (err, rows, fields) { if (err) { console.log('CREATE ERROR - ', err.message); return; } }) ------增加记录 var sql = "INSERT INTO `" + tbName + "`(`block_num`, `voter`, `weight`, `author`, `permlink`, `timestamp`,`voter_value`,`post_create`) VALUES ?"; myslconnection.query(sql, [values], function (err, rows, fields) { if (err) { console.log('INSERT for votes ERROR - ', err.message); return; } console.log("INSERT SUCCESS"); }); -------查询,删除 差不多 -------改 var userModSql = 'UPDATE `sdb_states` SET `blockNumber` = ?, `timestamp` = ?'; var userModSql_Params = [blockNum, blockTime]; myslconnection.query(userModSql, userModSql_Params, function (error, results, fields) { if (error) throw error; });
--------断开数据库连接
myslconnection.end()
-
数据库操作使用连接池
var mysql = require('mysql'); var pool = mysql.createPool({ host: 'localhost', //mysql服务器ip user: 'name', //mysql登录名 password: 'pwd', //mysql登录密码 database: 'data', //mysql数据库名 //charset: 'utf8mb4' //编码 }); pool.getConnection(function (err, connection) { connection.query("数据库操作语句", function (error, results) { if (error) console.log("查询blockNumber错误"); else resolve(results[0].blockNumber); }); // connection.release(); pool.releaseConnection(connection); })
//如果需要添加参数---向数据库插入多条数据时,
var values = [];
values.push(...)//这里加入需要插入的数据值
pool.getConnection(function (err, connection) { var sql = "INSERT INTO 表名(列名,列名) VALUES ?"; connection.query(sql, [values], function (err, rows, fields) { if (err) { console.log('INSERT ERROR - ', err.message); return; } console.log("INSERT SUCCESS"); }); // 释放连接 // connection.release(); pool.releaseConnection(connection); })
-
判断字符串中是否存在指定的字符串
- new RegExp("你需要判断存在的字符串").test("查询的那个字符串"); -----返回 true / false
eg:需要查看 一个字符串中是否存在 abc,
new RegExp("abc").test("abcdidehjhj");
-
Child Process模块
可参考:
https://www.cnblogs.com/chyingp/p/node-learning-guide-child_process.html
http://javascript.ruanyifeng.com/nodejs/child-process.html
例子:执行shell语句
//要执行多个命令 可以用“;”分开,如果要操作的文件夹跟项目文件不在同一级,需要每次命令写上 cd 要操作的那个文件夹,如下。
并且,到指定的文件夹下 这一步操作是不会保存的,也就是说,如果还要进行其他操作,又需要写“到指定的文件夹”这步操作
exec('cd ../../文件夹名/;+其他shell命令', function (error, stdout, stderr) { if (error) { console.error('error: ' + error); return; } console.log('stdout: ' + stdout); });
-
node-schedule模块
定时任务
const chedule = require("node-schedule"); let rule2 = new chedule.RecurrenceRule(); let times2 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59];//这里指的是你要执行的时间点,比如这里指的是 每个1,3,5...这个分钟数的时候执行,比如,11:01分,会执行一次Timer()这个方法
rule2.minute = times2; //---这里是分钟。也可以秒,小时等
chedule.scheduleJob(rule2, async function () {
Timer();//这里就是要定时任务执行的自定义方法
console.log("执行1.")
})
-
Json数据相关处理
1.json判断是否存在某一属性
function isHasAttr(obj, attr) { //判断是否有该键值 if (obj && obj.hasOwnProperty(attr)) { //如果有返回true return true; } return false; } let json="{"tags":[ss,sss]}" isHasAttr(json,"tags")
2.解析json
function safelyParseJSON(json) {--避免json格式不对报错 var parsed try { parsed = JSON.parse(json) } catch (e) { } return parsed } let json= safelyParseJSON(jsonObj)
- 随机整数
使用random-int(详见npm 相关包)
var randomInt = require('random-int');
let asocount = randomInt(10, 30)//金额随机10-30
--
-
其他
exports 返回的是模块函数
module.exports 返回的是模块对象本身,返回的是一个类
exports的方法可以直接调用
module.exports需要new对象之后才可以调用
var randomInt = require('random-int');