第三方金流串接 – 資料庫串接

閱讀時間約 9 分鐘

※ 認識Knex.js:

Knex.js是一個專門串接資料庫的抽象化層,它支援多種關聯式資料庫,包括 PostgreSQL、MySQL、MariaDB、SQLite3、Oracle 和 Amazon Redshift 等。好處是連接以上的資料庫時,可以直接使用Knex.js的語法,就會自動創建出相對應的資料庫語法。在進行資料庫遷移時,只需要小幅度的修改,而不需要重寫大部分的程式碼,這就是抽象隔離層的其中一個好處。

※ 下載Knex.js:

npm install knex --save

※ 下載MySQL

npm install mysql

※ 建立 Knex.js來和 MySQL 連接

在 utils 中建立 index.ts檔案 Knex.js來和 MySQL 連接

raw-image


導入 Knex.js

import knex, { Knex } from "knex";


創建資料庫連接函數

export const createDatabase = () => {
return knex({
client: 'mysql',
connection: {
host: '127.0.0.1',
port: 3306,
user: 'root',
password: 'password',
database: 'xue_mi'
},
pool: {
min: 0,
max: 5
}
});
}
  • export const createDatabase = () => { ... }:這行代碼導出了一個函數 createDatabase,用於建立資料庫連接。
  • client: 'mysql':指定使用 MySQL 作為資料庫客戶端。
  • connection:設置資料庫連接參數,包括主機、端口、用戶名、密碼和資料庫名稱。
    • host: '127.0.0.1':資料庫伺服器的主機地址。
    • port: 3306:資料庫伺服器的端口號。
    • user: 'root':資料庫用戶名。
    • password: 'password':資料庫用戶密碼。
    • database: 'xue_mi':資料庫名稱。
  • pool:設置連接池的參數,用於管理資料庫連接。
    • min: 0:最小連接數量。
    • max: 5:最大連接數量。

在 App 類中連線資料庫:

import { Knex } from 'knex';
import { createDatabase } from './utils';

class App {
public app: express.Application;
private knexSql: Knex;//新增

constructor() {
this.app = express();
this.config();
this.knexSql = createDatabase();//新增
this.routerSetup();
this.errorHandler();
this.knexSql
.select()
      .from('products')
      .then((result) => {
        console.log(result)
      })//新增
}
}

※ 設定環境變數

建立environment(.env)設定檔:

目的是定義資料庫的設定。

raw-image
  • .env檔案內容:
DATABASE_HOST = '127.0.0.1'
DATABASE_PORT = 3306
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'password'
DATABASE_DATABASE = 'xuemi'
  • index.ts檔案內容:
export const createDatabase = () => {
return knex({
client: 'mysql',
connection: {
//修改
host: process.env.DATABASE_HOST || '127.0.0.1',
port: Number(process.env.DATABASE_PORT) || 3306,
user: process.env.DATABASE_USER || 'root',
password: process.env.DATABASE_PASSWORD || 'password',
database: process.env.DATABASE_DATABASE || 'xuemi'
},
pool: {
min: 0,
max: 5
}
})
}


※ 下載dotenv

目的是用 dotenv 來讀取.env 檔案中的環境變數,並將它們加載到 process.env 中。

npm install dotenv

www.ts檔中引入 dotenv :

import { config } from 'dotenv';
config();

※ www.ts檔案介紹

www.ts 是應用程式的入口點,啟動伺服器。

  • 負責啟動伺服器,設置伺服器監聽的端口,並處理伺服器相關的錯誤和事件。
  • 一般用於初始化和管理伺服器進程。

※ www.ts檔案內容

  1. 載入模組引用應用程序和其他所需模組
import app from './app';
import http from 'http';
  1. 設定埠號:設置伺服器運行的埠號。
const port = process.env.PORT || 3000;
app.set('port', port);
  1. 建立 HTTP 伺服器:建立一個 HTTP 伺服器來處理請求。
const server = http.createServer(app);
  1. 監聽事件:監聽伺服器事件,如啟動成功、錯誤處理等。
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

function onError(error: NodeJS.ErrnoException): void {
if (error.syscall !== 'listen') {
throw error;
}

const bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;

switch (error.code) {
case 'EACCES':
console.error(`${bind} requires elevated privileges`);
process.exit(1);
break;
case 'EADDRINUSE':
console.error(`${bind} is already in use`);
process.exit(1);
break;
default:
throw error;
}
}

function onListening(): void {
const addr = server.address();
const bind = typeof addr === 'string'
? `pipe ${addr}`
: `port ${addr.port}`;
console.log(`Listening on ${bind}`);
}
  1. 啟動伺服器:最終啟動伺服器並開始監聽請求。



    全端網頁開發專業知識分享
    留言0
    查看全部
    發表第一個留言支持創作者!
    ※ 架構設計 ※ 資料庫規劃 id:流水號,唯一代替產品名稱的辨識代碼,AUTO_INCREMENT。 name:VARCHAR(255),NOT NULL。 amount:INTEGER(整數),UNSIGNED(不能是負數)。 description:TEXT,描述產品。 pre_
    ※ 下載Typescript 建立 TypeScript 和 Express 的基本目錄結構和必要配置。 npm install -g typescript-express-generator 建立模板引擎: ts-express --view=ejs server 安裝node_m
    ※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
    ※ 開發第三方金流串接使用工具: Typescript。 MySQL。 ※ 開發第三方金流串接使用技術: 基礎的docker使用方式。 用Typescript開發Node.JS的金流服務伺服器。 前端框架VueJs。 ※ 常見第三方金流平台介紹: PayPal: 特色: 全球最大
    ※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
    ※ Mongoose官網 ※ 認識Mongoose Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。 ※ Mongoose安裝 ※ 建立資料夾: mkdir mo
    ※ 架構設計 ※ 資料庫規劃 id:流水號,唯一代替產品名稱的辨識代碼,AUTO_INCREMENT。 name:VARCHAR(255),NOT NULL。 amount:INTEGER(整數),UNSIGNED(不能是負數)。 description:TEXT,描述產品。 pre_
    ※ 下載Typescript 建立 TypeScript 和 Express 的基本目錄結構和必要配置。 npm install -g typescript-express-generator 建立模板引擎: ts-express --view=ejs server 安裝node_m
    ※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
    ※ 開發第三方金流串接使用工具: Typescript。 MySQL。 ※ 開發第三方金流串接使用技術: 基礎的docker使用方式。 用Typescript開發Node.JS的金流服務伺服器。 前端框架VueJs。 ※ 常見第三方金流平台介紹: PayPal: 特色: 全球最大
    ※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
    ※ Mongoose官網 ※ 認識Mongoose Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。 ※ Mongoose安裝 ※ 建立資料夾: mkdir mo
    你可能也想看
    Google News 追蹤
    Thumbnail
    接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
    Thumbnail
    🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
    Thumbnail
    在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
    ※ 用 faker 套件產生假資料步驟 安裝 faker套件:快速生成假資料(人名、地名、時間)。 npm install [email protected] 引入 faker 套件: const faker = require('faker') 建立data資料夾來生成假資料。創建一個名為 gene
    Thumbnail
    KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
    「嵌入 Embedding」這個概念, 是指將「資料 Data」轉換為「向量 Vector」格式的過程。 資料可以是影片的樣本, 可以是音訊的樣本, 可以是圖片的樣本, 可以是文字的樣本。 不同類型的樣本, 可以透過相對應的預訓練神經網路模型, 將資料
    Thumbnail
    連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
    Thumbnail
    支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    gRPC是一款跨平台、高性能的RPC框架,他可以在任何環境下執行,主要用於後端為服務開發。在用戶端應用程式中,可以像本地物件那樣呼叫遠端伺服器的方法,因此可以創建出分散式應用。 使用 到https://github.com/protocolbuffers/protobuf/releases下
    Thumbnail
    Redis被稱為「資料結構伺服器」,因為其中的值(Value)可以是字串(String)、雜湊(Hash)、清單(List)、集合(Set)和有序集合(Sorted Set)等類型。 安裝 下載 wget https://download.redis.io/release/redis-6.
    Thumbnail
    接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
    Thumbnail
    🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
    Thumbnail
    在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
    ※ 用 faker 套件產生假資料步驟 安裝 faker套件:快速生成假資料(人名、地名、時間)。 npm install [email protected] 引入 faker 套件: const faker = require('faker') 建立data資料夾來生成假資料。創建一個名為 gene
    Thumbnail
    KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
    「嵌入 Embedding」這個概念, 是指將「資料 Data」轉換為「向量 Vector」格式的過程。 資料可以是影片的樣本, 可以是音訊的樣本, 可以是圖片的樣本, 可以是文字的樣本。 不同類型的樣本, 可以透過相對應的預訓練神經網路模型, 將資料
    Thumbnail
    連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
    Thumbnail
    支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    gRPC是一款跨平台、高性能的RPC框架,他可以在任何環境下執行,主要用於後端為服務開發。在用戶端應用程式中,可以像本地物件那樣呼叫遠端伺服器的方法,因此可以創建出分散式應用。 使用 到https://github.com/protocolbuffers/protobuf/releases下
    Thumbnail
    Redis被稱為「資料結構伺服器」,因為其中的值(Value)可以是字串(String)、雜湊(Hash)、清單(List)、集合(Set)和有序集合(Sorted Set)等類型。 安裝 下載 wget https://download.redis.io/release/redis-6.