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" }
·編寫(xiě)主體:
根路徑下創(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編寫(xiě)的、類型系統(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)文章
NodeJS設(shè)計(jì)模式總結(jié)【單例模式,適配器模式,裝飾模式,觀察者模式】
這篇文章主要介紹了NodeJS設(shè)計(jì)模式,結(jié)合實(shí)例形式總結(jié)分析了nodejs單例模式,適配器模式,裝飾模式,觀察者模式的概念、原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09node.js缺少mysql模塊運(yùn)行報(bào)錯(cuò)的解決方法
前幾天在工作中需要利用node.js連接數(shù)據(jù)庫(kù),通過(guò)網(wǎng)上的教程連接后運(yùn)行卻報(bào)錯(cuò)了,然后趕緊查找解決的方法,通過(guò)測(cè)試與朋友的提點(diǎn),終于解決了這個(gè)問(wèn)題,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-11-11NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù)
這篇文章主要為大家介紹了NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解
這篇文章主要為大家介紹了nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解
這篇文章主要為大家介紹了基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Node.js API詳解之 dgram模塊用法實(shí)例分析
這篇文章主要介紹了Node.js API詳解之 dgram模塊用法,結(jié)合實(shí)例形式分析了Node.js API中dgram模塊基本功能、函數(shù)、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-06-06