node.js 实际应用记录

1、写了个node结合shim.js和xlsx.js对excel表格进行转json操作,在转json的方法中调用文件读取、转码和输出路径方法,读取上传的excel文件,判断表格竖列是否为空,指定表格列转为json对象名和值,写入json文件中输出到自定义目录,执行node服务时需要npm安装fs、expres和body-parser,现有的问题是输出到transform文件夹下的json文件各列值为空

2、使用node进行连接mysql建表时,提示express的createServer方法不可用,检查了资料是因为从express2.x版本更新到4.x过程中摒弃了创建服务的方法,切换到2.x版本使用;

3、更换express版本解决了express的报错内容,连接mysql时候报错客户端不支持服务器身份验证,进入cmd对mysql进行操作,连接成功的,并且能读表,但是在使用sqlyog时候,测试链接不通过,通过重置mysql的root密码之后连接成功;

4、在服务js中定义编辑mysql语句后,使用db.query来执行sql语句 db.query()方法有两个参数 ,第一个参数是要执行的语句,第二个参数是个回调函数,回调函数里可以接收错误信息,也有执行后回来的信息,代码逻辑错误优先

5、mysql数据库中新建了东大数据库使用统计表,使用node读取到了表中数据的json格式,但是随后甩出来报错无法设置头,检查了开发者模式后发现是在send之后,异步回调时send会再自行加上一个head,两处head会报错,将请求后的结果return,页面能输出表中的json;

6、vue的demo项目中插入node服务,执行服务后显示服务执行成功,但是在vue中用axios进行跨域时,遇到两处问题,一是返回的json数据中文显示为乱码,确认过代码中规定了使用“utf-8文字编码”,原因需要排查;二是跨域时提示“Access-Control-Allow-Origin”,怀疑是在cors在初次请求origin没有添加请求头或者响应头,网上解释要在server.js中添加响应头、文字类型等跨域访问配置,配置完之后解决了报错问题;

7、为了方便node服务停机重载和负载均衡,对大数据项目安装使用PM2功能修改文件配置项,并及时切换环境运行项目;

8、触摸屏完成安装mysql,迁移数据时候会因出错终止,检查了日志文件是因为迁移出的是mysql8.0,文字编码是utf8mb4,触摸屏文字编码是utf8,导入sql时候报错是字符集和数据库排序规则的问题,修改mysql中数据库和表的字符集为utf8,数据库排序规则为utf8_general_ci;

9、导入外部sql文件,执行到39个sql语句就报错,而且出现sqlyog报错文件体积800MB导致编辑器打不开,使用了大文件编辑器emeditor,能够读写大体积文档; mysql执行的sql脚本里是批量插入,需要的缓存空间比较大。而mysql默认的可能才几m或者多少kb而已,因此修改了mysql缓存空间,重装数据库以及重启服务有可能会失效,以后会常用,这里代码是:

SET GLOBAL max_allowed_packet=2684355456;;

附上server.js

var express = require('express')

var app = express()

var fs = require('fs')

var mysql = require('mysql')

var cors = require('cors')

// 设置跨域访问
app.all('*', function (req, res, next) {
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Headers', 'X-Requested-With')
  res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
  res.header('X-Powered-By', ' 3.2.1')
  res.header('Content-Type', 'application/json;charset=utf-8')
  next()
})

app.use(
  cors({
    origin: ['http://localhost:3000'],
    methods: ['get', 'post'],
    allowedHeaders: ['Content-Type', 'Authorization']
  })
)

app.get('/list', function (req, res) {
  fs.readFile(__dirname + '/' + 'list.json', 'utf-8', function (err, data) {
    console.log('执行服务成功')
    res.end(data)
  })
})

const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '*********',
  port: '3306',
  database: 'tables'
})

db.connect(err => {
  if (err) throw err
  console.log('连接成功')
})

// 判断是否有newsjk或newztk
app.get('/getDatabases', (req, res) => {
  let sql = 'show tables;'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/newsjk', (req, res) => {
  let sql = 'SELECT * FROM newsjk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/newsjkCount', (req, res) => {
  let sql = 'SELECT * FROM newsjk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/newztk', (req, res) => {
  let sql = 'SELECT *FROM newztk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/newztkCount', (req, res) => {
  let sql = 'SELECT *FROM newztk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ddsjk', (req, res) => {
  let sql = 'SELECT * FROM ddsjk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ddsjkCount', (req, res) => {
  let sql = 'SELECT * FROM ddsjk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ddztk', (req, res) => {
  let sql = 'SELECT *FROM ddztk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ddztkCount', (req, res) => {
  let sql = 'SELECT *FROM ddztk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ndsjk', (req, res) => {
  let sql = 'SELECT *FROM ndsjk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ndsjkCount', (req, res) => {
  let sql = 'SELECT *FROM ndsjk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ndztk', (req, res) => {
  let sql = 'SELECT *FROM ndztk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/ndztkCount', (req, res) => {
  let sql = 'SELECT *FROM ndztk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/nsdsjk', (req, res) => {
  let sql = 'SELECT *FROM nsdsjk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/nsdsjkCount', (req, res) => {
  let sql = 'SELECT *FROM nsdsjk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/nsdztk', (req, res) => {
  let sql = 'SELECT *FROM nsdztk'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/nsdztkCount', (req, res) => {
  let sql = 'SELECT *FROM nsdztk_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/school', (req, res) => {
  let sql = 'SELECT *FROM school'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/schoolpm', (req, res) => {
  let sql = 'SELECT *FROM schoolpm'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/schoolLw', (req, res) => {
  let sql = 'SELECT *FROM schoolLw'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/hospital', (req, res) => {
  let sql = 'SELECT *FROM hospital'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/hospitalpm', (req, res) => {
  let sql = 'SELECT *FROM hospitalpm'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/hospitalLw', (req, res) => {
  let sql = 'SELECT *FROM hospitallw'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/hospitalTable', (req, res) => {
  let sql = 'select hospital1.year,hospital2.year,hospital3.year,hospital4.year,hospital1.value,hospital2.value,hospital3.value,hospital4.value from ((hospital1 left join hospital2 on hospital1.name=hospital2.name) left join hospital3 on hospital1.name=hospital3.name) left join hospital4 on hospital1.name=hospital4.name'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/dangzheng', (req, res) => {
  let sql = 'SELECT *FROM dangzheng'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/dangzhengLw', (req, res) => {
  let sql = 'SELECT *FROM dangzhenglw'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/tongjiCount', (req, res) => {
  let sql = 'SELECT *FROM tongji_count'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/tongjiFw', (req, res) => {
  let sql = 'SELECT *FROM tongji_fawen'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

app.get('/tongjiBy', (req, res) => {
  let sql = 'SELECT *FROM tongji_beiyin'
  db.query(sql, (err, result) => {
    if (err) {
      console.log(err)
    } else {
      console.log(result)
      res.json(result)
    }
  })
})

var server = app.listen(3000, function () {
  var host = server.address().address
  var port = server.address().port
  console.log(host, port)
})
原文地址:https://www.cnblogs.com/zax0927/p/12713747.html