nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù)
首先是typeorm的官方地址,
國(guó)內(nèi)有人翻了中文版,不保證時(shí)效性
·通過(guò)npm安裝下列包:
- typeorm //typeorm連接數(shù)據(jù)庫(kù)
- @types/node //類型系統(tǒng)
- typescript //ts基礎(chǔ)
- oracledb //oracle基礎(chǔ)
- ts-node //nodejs編譯運(yùn)行ts的工具;
·根路徑配置:
- package.json //項(xiàng)目依賴、腳本、描述等
- tsconfig.json //ts編譯設(shè)置
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"outDir": "./dist",
"emitDecoratorMetadata": true, //typeorm特需
"experimentalDecorators": true //typeorm特需
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
ormconfig.json //數(shù)據(jù)庫(kù)連接參數(shù)
{
"type": "oracle",
"host": "10.16.2.41",
"port": 1521,
"username": "admin",
"password": "admin",
"sid": "ORCL",
"synchronize": true,
"logging": true,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
]
}
.vscode配置:launch.json ,主要配置vscode在debug時(shí)由ts編譯所得的js路徑,此項(xiàng)與項(xiàng)目勿關(guān),只為了方便調(diào)試
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}\\node_modules\\ts-node\\dist\\bin.js",
"args": [
"${relativeFile}"
],
"cwd": "${workspaceRoot}",
"protocol": "inspector"
}
·編寫主體:
根路徑下創(chuàng)建/編輯index.ts(名字可自定義),配置package中start腳本命令為ts-node index.ts,
import "reflect-metadata";
import {createConnection} from "typeorm";
import {xxx} from "./src/entity/xxx"; //引入數(shù)據(jù)表結(jié)構(gòu)映射文件
createConnection().then(async connection => { //連接參數(shù)為空時(shí)自動(dòng)按照路徑下ormconfig.json信息連接
/*let a = await connection.query(
`SELECT * FROM xxx`
); *///直接使用原生sql語(yǔ)句查詢
let a = await connection.manager.find(xxx) //使用連接器查詢 connection.manager
console.log("result: ", a);
}).catch(error => console.log(error));
在src/entity/下構(gòu)建數(shù)據(jù)表實(shí)體結(jié)構(gòu)xxx.js,格式參考官網(wǎng)
在cmd根路徑運(yùn)行npm start,或使用vscode調(diào)試
至此,我們已經(jīng)成功使用typeorm連接到了Oracle數(shù)據(jù)庫(kù),若要構(gòu)成完整的后端只需添加中間件等等
·與sequelize的差異
從Sequelize轉(zhuǎn)移到typeorm,是因?yàn)閟equelize官方不支持連接Oracle
typeorm像名字中描述的那樣,是個(gè)使用typescript編寫的、類型系統(tǒng)非常完整的數(shù)據(jù)庫(kù)關(guān)系映射,放張數(shù)據(jù)類型截圖:

這還是js嗎?當(dāng)然,如此完整的類型系統(tǒng)得益于typescript,我們也可以在構(gòu)建時(shí)酌情使用類型聲明,因?yàn)樗皇潜仨毜模ū举|(zhì)仍是js)
很多類型都可以使用js原生類型+長(zhǎng)度代替,是否使用專用類型聲明取決于實(shí)際需求
根據(jù)數(shù)據(jù)庫(kù)自動(dòng)生成/更新映射文件腳本會(huì)相對(duì)復(fù)雜
typescript也是初次接觸,文章只是通過(guò)短短幾星期的摸索得來(lái),內(nèi)容難免有誤,若有錯(cuò)誤還請(qǐng)點(diǎn)撥,謝謝
總結(jié)
以上所述是小編給大家介紹的nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Node.js?全局變量無(wú)法掛載問(wèn)題解決分析
這篇文章主要為大家介紹了Node.js?全局變量無(wú)法掛載問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Node koa服務(wù)器實(shí)現(xiàn)獲取客戶端ip
這篇文章主要為大家詳細(xì)介紹了Node koa服務(wù)器實(shí)現(xiàn)獲取客戶端ip的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下2025-02-02
Nodejs開(kāi)發(fā)grpc的實(shí)例代碼
Nodejs開(kāi)發(fā)grpc包含靜態(tài)和動(dòng)態(tài)兩種代碼生成方式,靜態(tài)代碼生成需要提前通過(guò).proto文件編譯生成JS源碼,而動(dòng)態(tài)代碼生成則是在運(yùn)行時(shí)指定IDL文件位置,實(shí)時(shí)生成源碼,兩者各有優(yōu)缺點(diǎn),本文給大家介紹Nodejs開(kāi)發(fā)grpc的實(shí)例代碼,感興趣的朋友一起看看吧2024-10-10
Node.js的MongoDB驅(qū)動(dòng)Mongoose基本使用教程
這篇文章主要介紹了Node.js的MongoDB驅(qū)動(dòng)Mongoose的基本使用教程,前端js+后端Node.js+數(shù)據(jù)庫(kù)MongoDB是當(dāng)下流行的JavaScript全棧開(kāi)發(fā)方案,需要的朋友可以參考下2016-03-03
node.js文件系統(tǒng)模塊和兩個(gè)重要模塊
這篇文章主要介紹了node.js文件系統(tǒng)模塊和兩個(gè)重要模塊,nodejs是JavaScript的后端運(yùn)行環(huán)境,并對(duì)node.js的fs文件系統(tǒng)模塊做了簡(jiǎn)單的介紹,需要的小伙伴可以參考一下2022-06-06

