nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù)
首先是typeorm的官方地址,
國內(nèi)有人翻了中文版,不保證時效性
·通過npm安裝下列包:
- typeorm //typeorm連接數(shù)據(jù)庫
- @types/node //類型系統(tǒng)
- typescript //ts基礎(chǔ)
- oracledb //oracle基礎(chǔ)
- ts-node //nodejs編譯運行ts的工具;
·根路徑配置:
- package.json //項目依賴、腳本、描述等
- 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ù)庫連接參數(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時由ts編譯所得的js路徑,此項與項目勿關(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ù)為空時自動按照路徑下ormconfig.json信息連接 /*let a = await connection.query( `SELECT * FROM xxx` ); *///直接使用原生sql語句查詢 let a = await connection.manager.find(xxx) //使用連接器查詢 connection.manager console.log("result: ", a); }).catch(error => console.log(error));
在src/entity/下構(gòu)建數(shù)據(jù)表實體結(jié)構(gòu)xxx.js,格式參考官網(wǎng)
在cmd根路徑運行npm start,或使用vscode調(diào)試
至此,我們已經(jīng)成功使用typeorm連接到了Oracle數(shù)據(jù)庫,若要構(gòu)成完整的后端只需添加中間件等等
·與sequelize的差異
從Sequelize轉(zhuǎn)移到typeorm,是因為sequelize官方不支持連接Oracle
typeorm像名字中描述的那樣,是個使用typescript編寫的、類型系統(tǒng)非常完整的數(shù)據(jù)庫關(guān)系映射,放張數(shù)據(jù)類型截圖:
這還是js嗎?當(dāng)然,如此完整的類型系統(tǒng)得益于typescript,我們也可以在構(gòu)建時酌情使用類型聲明,因為它不是必須的(本質(zhì)仍是js)
很多類型都可以使用js原生類型+長度代替,是否使用專用類型聲明取決于實際需求
根據(jù)數(shù)據(jù)庫自動生成/更新映射文件腳本會相對復(fù)雜
typescript也是初次接觸,文章只是通過短短幾星期的摸索得來,內(nèi)容難免有誤,若有錯誤還請點撥,謝謝
總結(jié)
以上所述是小編給大家介紹的nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
NodeJS設(shè)計模式總結(jié)【單例模式,適配器模式,裝飾模式,觀察者模式】
這篇文章主要介紹了NodeJS設(shè)計模式,結(jié)合實例形式總結(jié)分析了nodejs單例模式,適配器模式,裝飾模式,觀察者模式的概念、原理與具體實現(xiàn)技巧,需要的朋友可以參考下2017-09-09NodeJS落地WebSocket實踐前端架構(gòu)師破局技術(shù)
這篇文章主要為大家介紹了NodeJS落地WebSocket實踐前端架構(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-11