• 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对象之后才可以调用

  • 相关阅读:
    tcl tk lappend
    file join
    [转载]强指针和弱指针
    DisplayHardware
    Android 十大调试方法
    C语言程序的外部变量与函数
    DisplayHardware
    Android 十大调试方法
    wifi连接流程分析
    [转载]强指针和弱指针
  • 原文地址:https://www.cnblogs.com/hllxy/p/11511712.html
Copyright © 2020-2023  润新知