本文主要是展示使用 Express 和 MySQL 來搭建項目框架的步驟,展示瞭如何搭建項目並進行基本操作。
創建項目
Express 是基於 Node.js 平台,快速、開放、極簡的 Web 開發框架。
全局安裝 express-generator
express-generator 是 Express 應用程序生成器工具,我們可以使用它來快速創建應用程序框架。
| |
項目的目錄結構

bin/www是啟動入口文件,在裡面可以設置端口號等
下載依賴
創建好項目之後,裡面有包含基本的項目文件,也有相關依賴

| |
啟動項目
| |
安裝 nodemon
可以安裝 nodemon 來監控 node.js 源代碼的任何變化和自動重啟你的服務器
全局安裝 nodemon:
| |
啟動項目
| |

這就啟動成功啦
瀏覽器打開http://localhost:3000就能看到頁面啦

安裝 winston 添加打印日誌文件
這裡採用的是 winston 日誌
具體用法可看文檔:https://www.npmjs.com/package/winston
| |
配置打印日誌格式
在項目的根目錄添加一個配置打印日誌格式的文件 logger.js (此文件在 github 上)
修改 app.js 的配置
修改項目默認的變量名:
- 將
const logger = require('morgan');改成:const morgan = require('morgan') - 相應的也要把
app.use(logger('dev'));改成:app.use(morgan('dev'));
| |
引入 logger.js 文件
| |

修改錯誤處理
將錯誤打印到日誌上

測試日誌是否打印成功
請求一個不存在的路由,如:http://localhost:3000/hello

打開日誌文件,看到這條錯誤被打印出來就成功啦

MySQL
啟動數據庫
這裡使用的方法是用 Docker 安裝 MySQL
這裡是安裝的教程:https://www.runoob.com/docker/docker-install-mysql.html
- docker 拉取 MySQL 鏡像
| |
- 查看本地鏡像
| |
- 運行容器
| |
參數說明:
-p 3306:3306:映射容器服務的3306端口到宿主機的3306端口,外部主機可以直接透過宿主機ip:3306訪問到 MySQL 的服務。MYSQL_ROOT_PASSWORD=123456:設置 MySQL 服務 root 用戶的密碼。
- 安裝成功
透過 docker ps 命令查看是否安裝成功
本機可以通過 root / 123456 訪問 MySQL 服務。
安裝數據庫管理工具
- Sequel Pro macOS 用戶安裝
- navicat windows 用戶安裝
這裡選擇用 Sequel Pro 啟動好數據之後,就在 Sequel Pro 連接數據庫,密碼是啟動數據庫時自己設置的密碼

使用 Navicat 數據庫管理工具連線時,出現錯誤
若出現 1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client 錯誤,原因為:
mysql8 之前的版本,加密規則是 mysql_native_password,而 mysql8 之後的版本,加密規則是 caching_sha2_password
解決方法:
- 升級 navicat 驅動。
- 進到容器內,把 mysql 用戶登入密碼加密規則還原成
mysql_native_password
以下採用方法2解決,操作如下:
1. 打開 cmd,輸入以下指令以 bash 進入容器:
| |
2. 使用 mysql 指令連線資料庫:
| |
3. 使用 mysql 指令查詢用戶訊息:
| |
host為%表示不限制 ip、localhost表示本機使用plugin非mysql_native_password則需要修改密碼
4. 使用 mysql 指令修改密碼:
- 更新 user 為 root,
host為%的密碼為123456
| |
- 更新 user 為 root,
host為localhost的密碼為123456
| |
5. 再次在 Navicat 中連接 mysql,連接成功
創建數據庫
使用數據庫管理工具新建數據庫 database 名稱為:expressFrame


進入 expressFrame 庫,新建用戶信息表為 user ,默認有 id 字段,需要再添加以下必要字段:
字段:id
| |
使用 Knex.js 增刪改查數據庫
Knex.js 是為 Postgres、MSSQL、MySQL、MariaDB、SQLite3、Oracle 和 Amazon Redshift 設計的 SQL 查詢構建器,其設計靈活,便於攜帶並且使用起來非常有趣。Knex 的主要目標環境是 Node.js,您需要安裝該 knex 庫,然後安裝適當的數據庫庫:pg 適用於 PostgreSQL、CockroachDB 和 Amazon Redshift,pg-native 對於具有本機 C++ libpq 綁定的 PostgreSQL(需要安裝 PostgresSQL 才能鏈接),mysql 適用於 MySQL 或 MariaDB,sqlite3 適用於 SQLite3,tedious 適用於 MSSQL。
| Flag | Library |
|---|---|
| pg | PostgreSQL、CockroachDB、Amazon Redshift |
| pg-native | 本機 C++ libpq 綁定的 PostgreSQL(需要安裝 PostgresSQL 才能鏈接) |
| mysql | MySQL、MariaDB |
| sqlite3 | SQLite3 |
| tedious | MSSQL |
下載相關依賴
| |
添加配置信息
在項目根目錄下,新建配置信息 config.js,之後的配置信息涉及到數據庫和密碼,不上傳到 Github 等託管平台,所以需要單獨設置,使用 .gitignore 避免上傳。之後敏感的配置信息,都將在此配置。host 地址為數據庫的服務地址,本地為 127.0.0.1
config.js
| |
新建 .gitignore
在項目根目錄下,新建 .gitignore 避免上傳 config.js 、log、 node_modules 等不需要被上傳到 Github 的文件。
.gitignore
| |
數據庫配置
新建 models/knex.js,初始化配置 knex
models/knex.js
| |
knex 增刪改查
在 models 下新建文件 base.js
models/base.js
| |
新建用戶模型
在 models 下新建文件 user.js
models/user.js
| |
新建用戶控制器
在根目錄新建控制器文件夾 controllers,在 controllers 新建 user.js,並設置 showUser 方法
controllers/user.js
| |
添加獲取用戶接口
修改路由 routes/index.js,添加獲取用戶信息的接口
routes/index.js
| |

測試接口
訪問一下 http://localhost:3000/get_user
查看接口返回的數據

這就大功告成啦~
github地址:https://github.com/wjdesign/nodejsExpressMysqlDemo
走過路過點個贊唄~
