node 笔记

1、node里面使用mysql

查询语句的表和字段名用两个??,参数值用?表示

(1)数据库链接 

var mysql = require('mysql');
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'a11111111',
    database : 'ccl_project_db'
});
module.exports = connection;

使用:

connection.connect(function(err, conne) {
      if (err) throw err;
      const sql = `select * from user`;
      connection.query(sql, function(err, rows) {
          if (err) throw err;
          res.json(rows);
      });
});

(2)连接池

var mysql = require('mysql');
var pool = mysql.createPool({    
    host     : 'localhost',
    user     : 'root',
    password : 'a11111111',
    database : 'ccl_project_db',
    port: 3306,
    stringifyObjects: true, //对象类型设置。默认false : RowDataPacket对象 , true : json对象
    dateStrings : true, //日期时间类型设置。默认false : 2016-08-31T02:00:32.000Z (UTC通用标准时) , true : 2016-08-31 10:00:32 (常用日期时间格式)
}); //数据库连接池

var query=function(sql,options,callback){  
    pool.getConnection(function(err,conn){  
        if(err){  
            callback(err,null,null);  
        }else{  
            conn.query(sql,options,function(err,results,fields){  
                //释放连接  
                conn.release();  
                //事件驱动回调  
                callback(err,results,fields);  
            });  
        }  
    });  
};  

module.exports = query;

使用:

const sql = `select * from user`;
    query(sql, '', function(err,results,fields){  
        if (err) throw err;
        res.json(results);
    });

 2、图片上传和保存

 注意:

  (1)如果保存图片不存在的话,要自己手动创建,不然图片保存不下来

  (2)打开服务器本地的静态文件图片乱码

    解决方法:

var options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders: function (res, path, stat) {
    res.set('x-timestamp', Date.now())
  }
}
app.use(express.static('public', options));

  (3)上传的图片太大报错

  request entity too large 413

  解决

app.use(bodyParser.urlencoded({limit:'50mb',extended:true}));

 

3、node服务端的后台页面显示是源码的形式显示出来

  加上这个,就可以让页面显示出来,而不是以源码的形式显示出来

 4、node-mysql防止SQL注入

方法一:对传入的参数进行编码:

(1)mysql.escape(param)

(2)connection.escape(param)

(3)pool.escape(param)

方法二:使用sql语句的使用使用?

  方法内部会自动对参数进行编码

方法三:mysql.format(sql,参数数组)

posted @ 2017-12-27 10:04  逆光飞翔23  阅读(155)  评论(0编辑  收藏  举报