环境准备
版本管理工具
npm install -g n
报错使用
npm install -g n --force
全局命令
__dirname 文件路径
console.log(__dirname)
// D:\web\知识体系\后端\传递参数
__filename 文件名
console.log(__filename)
// D:\web\知识体系\后端\传递参数\index.js
process对象
process提供了Node进程中相关的信息,如Node的运行环境,参数信息等
fs 文件系统模块
fs 模块用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求
fs.readFile()方法,用来读取指定文件中的内容fs.writeFile()方法,用来向指定的文件中写入内容
导入
const fs = require('fs')
读取指定文件中的内容 fs.readFile()
语法格式
fs.readFile(path[, options], callback)
参数解读
- 1 必选参数,字符串,表示文件路径
- 2 可选参数,表示以什么编码格式来读取文件
- 3 必选参数,文件读取完成后,通过回调函数拿到读取的结果
示例
// 1 导入 fs 模块
const fs = require('fs')
// 2 调用 fs.readFile()方法读取文件
// 参数3:err为错误结果,dataStr为数据
fs.readFile('./1.txt', 'utf8', function(err, dataStr) {
console.log(err)
console.log('-----')
console.log(dataStr)
// null
// -----
// 111
})
写入文件内容 fs.writeFile()
示例
如果写入成功err为null,并且新增2.txt文件
const fs = require('fs')
fs.writeFile('./txt/2.txt', 'abcd', function(err) {
if (err) {
return console.log('文件写入失败!' + err.message)
}
console.log('文件写入成功!') // 文件写入成功!
})
路径动态拼接问题
const fs = require('fs')
// __dirname 表示当前文件所处目录
console.log(__dirname)
fs.readFile(__dirname + '/txt/1.txt', 'utf8', function (err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message)
}
console.log('读取文件成功!' + dataStr)
})
path 路径模块
路径拼接 path.join()
使用path.join()方法,可以把多个路径片段拼接为完整的路径字符串, 示例
const path = require('path')
const fs = require('fs')
// 注意 ../ 会抵消前面的路径
const pathStr = path.join('/a', '/b/c', '../', './d', 'e')
console.log(pathStr) // \a\b\d\e
fs.readFile(path.join(__dirname, '/txt/1.txt'), 'utf8', function(err, dataStr) {
if (err) {
return console.log(err.message)
}
console.log(dataStr) // 111
})
获取路径中的文件名 path.basename()
使用path.basename()方法,可以从一个文件路径中,获取到文件的名称部分
const path = require('path')
const fpath = '/a/b/c/index.html'
const fullName = path.basename(fpath)
console.log(fullName) // index.html
const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt) // index
获取路径中的扩展名
http模块
http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑, 变成一台Web服务器,从而对外提供Web资源服务。
导入
const http = require('http')
创建web服务器
// 1. 导入http模块
const http = require('http')
// 2. 创建web服务器实例
const server = http.createServer()
// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function(req, res) {
console.log('Someone visit our web server')
})
server.listen(8080, function () {
console.log('server running at http://127.0.0.1:8080')
})
post请求
WebSocket
// 后端
// 导入websocket
const WebSocket = require('ws')
// WebSocket
const wss = new WebSocket.Server({ port: 3939 })
wss.on('connection', function connection(ws) {
console.log('server: receive connection.')
ws.on('message', function incoming(message) {
console.log('server: received: %s', message)
})
global.ws = ws
})
// 前端
const that = this
// 建立WebSocket通信
const ws = new WebSocket('ws://localhost:3939')
ws.onopen = function() {
console.log('建立WebSocket通信')
// ws.send('from client: hello')
}
ws.onmessage = function(e) {
that.onlineNum = JSON.parse(e.data).online
}
MySQL
MySQL时间查询
1,查询当天(今天)的数据
SELECT * FROM order WHERE TO_DAYS(order_time) = TO_DAYS(NOW())
2,查询昨天的数据
SELECT * FROM order WHERE TO_DAYS(NOW()) - TO_DAYS(order_time) = 1
这里需要注意网上很多都是<=1是不对的,TO_DAYS函数 返回一个天数,从年份0开始的天数
比如:SELECT TO_DAYS(‘1997-10-07′);
结果 729669
表示从0年开始 到1997年10月7号之间的天数,所以应该是=1,如果是<=1会把昨天的和今天的也查出来。
DATE_FORMAT(时间格式化)
对应规则,通过这个就可以查询某一天对应的数据,time是时间对应字段
select * from report_use where DATE_FORMAT(time,'%Y-%m-%d')='${info.time}'
3. 查询一天中每小时的数据
参考
HOUR: 返回时间的小时部分。返回值的范围为0至23的小时值。参考
select a.order_hour as order_hour, ifnull(b.num, 0) as num
from (
SELECT 0 AS order_hour UNION ALL SELECT 1 AS order_hour UNION ALL
SELECT 2 AS order_hour UNION ALL SELECT 3 AS order_hour UNION ALL
SELECT 4 AS order_hour UNION ALL SELECT 5 AS order_hour UNION ALL
SELECT 6 AS order_hour UNION ALL SELECT 7 AS order_hour UNION ALL
SELECT 8 AS order_hour UNION ALL SELECT 9 AS order_hour UNION ALL
SELECT 10 AS order_hour UNION ALL SELECT 11 AS order_hour UNION ALL
SELECT 12 AS order_hour UNION ALL SELECT 13 AS order_hour UNION ALL
SELECT 14 AS order_hour UNION ALL SELECT 15 AS order_hour UNION ALL
SELECT 16 AS order_hour UNION ALL SELECT 17 AS order_hour UNION ALL
SELECT 18 AS order_hour UNION ALL SELECT 19 AS order_hour UNION ALL
SELECT 20 AS order_hour UNION ALL SELECT 21 AS order_hour UNION ALL
SELECT 22 AS order_hour UNION ALL SELECT 23 AS order_hour
) as a
LEFT JOIN
(
SELECT HOUR(create_time) AS order_hour, count(id) AS num FROM mod_work_order
WHERE create_time >= str_to_date('2021-03-22 00:00:00','%Y-%m-%d %T')
AND create_time <= str_to_date('2021-03-22 23:59:59','%Y-%m-%d %T')
GROUP BY order_hour
) b ON a.order_hour=b.order_hour
ORDER BY order_hour;
mysql分页
// 分页分两次查询,一次是查询总数据,一次是查询分页的数据
// 1 总数据除以每页数得出总页数省略
// 2 limit(第几页的数据 - 1)*每页多少条,每页多少条
select * from report_use where id=${userInfo[0].id} limit ${(currentPage-1)*10}, 10