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);
 })
 
  • 判断字符串中是否存在指定的字符串

  1.  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)
  • 其他

exports 返回的是模块函数

module.exports 返回的是模块对象本身,返回的是一个类

exports的方法可以直接调用
module.exports需要new对象之后才可以调用

原文地址:https://www.cnblogs.com/hllxy/p/11511712.html