20220930-備註更新 此篇文章為 0.2.x
- 支持 MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / SAP Hana / sql.js
- 支持 MongoDB NoSQL數據庫
- json / xml / yml / env 格式的連接配置
安裝說明
以MySQL為範例使用
npm install typeorm reflect-metadata @types/node mysql2 --save
TypeScript tsconfig.json
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
連線說明
ormconfig.js
module.exports = {
type: 'mysql',
logging: process.env.NODE_ENV === 'production' ? [ 'error', 'warn' ] : true,
synchronize: process.env.NODE_ENV === 'development' ? true : false,
replication: {
master: {
host: process.env.MYSQL_MASTER_HOST,
port: 3306,
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
},
slaves: [{
host: process.env.MYSQL_MASTER_HOST,
port: 3306,
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
}],
canRetry: true,
/**
* 當errorCount大於removeNodeErrorCount時,請刪除PoolCluster中的節點。 (默認值:5)
*/
removeNodeErrorCount: 5,
/**
* 如果連接失敗,請指定進行另一次連接之前的毫秒數。
* 如果設置為0,則將刪除節點,並且永遠不會重複使用該節點。 (Default: 0)
*/
restoreNodeTimeout: 0,
/**
* 確定如何 slaves 選擇:
* RR: 交替選擇一個(循環)
* RANDOM: 通過隨機函數選擇節點。
* ORDER: 選擇第一個無條件可用的節點。
*/
selector: 'RR',
},
entities: [
'entities/*.js',
],
migrations: [
'migrations/*.js',
],
subscribers: [
'subscribers/*.js',
],
cli: {
entitiesDir: 'entities',
migrationsDir: 'migrations',
subscribersDir: 'subscribers',
},
extra: {
connectionLimit: 10,
},
}
import {createConnection} from "typeorm";
// createConnection method 會自動讀取連線 options 來自 ormconfig file
const connection = await createConnection();