本文主要是展示使用 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
走過路過點個贊唄~