node.js - Hoe kan ik mijn databaseverbinding (Oracle) maken met NODEJS(ORM)?
Ik wil mijn Oracle Cloud-database verbinden, die bekend staat als standalone database en waarmee ik al succesvol de verbinding met NODEJS heb gemaakt (volgens de Oracle-documentatie), maar ik kan het nog steeds niet implementeren met ORM en daar heb ik problemen mee. Ik gebruik Typeorm.io, dat zegt compatibel te zijn met Oracle, maar ik heb geen idee hoe ik dat moet doen. Ik hoop dat je me kunt helpen:
They are connection data = {censorship}
Dit is mijn bestand db.ts dat probeert Typeorm.io te gebruiken
import {
createConnection
} from "typeorm";
createConnection({
type: "oracle",
username: "admin",
password: "{censorship}",
database: "DB{censorship}_high",
synchronize: true,
logging: false
}).then(connection => {
console.log('connect database')
}).catch(error => console.log(error));Dit is mijn verbindingsbestand dat correct voor mij werkt db.js
const oracledb = require('oracledb');
let dbConfig = require('./dbconfig');
oracledb.initOracleClient({
libDir: 'D:\\MaterialSkywork\\Oracle\\instantclient_21_3'
});
console.log(dbConfig)
async function Open(sql, binds, autoCommit) {
let cnn = await oracledb.getConnection(dbConfig);
let result = await cnn.execute(sql, binds, {
autoCommit
});
cnn.release();
return result;
}
exports.Open = Open;Dit was mijn test voor de autonome database index.js
const BD = require('./db.js');
async function start() {
sql = "select * from elopez.orders";
let result = await BD.Open(sql, [], false);
Orders = [];
result.rows.map(order => {
let userSchema = {
"order": order[0],
"order_status": order[3],
}
Orders.push(userSchema);
})
console.log(Orders);
}
start()Of als je dat niet kunt, hoe kan ik mijn db.js-bestand migreren naar db.ts? Ik heb het geprobeerd, maar ik had veel problemen met het doorvoeren van TypeScript en ik sta open voor je meningen om mijn code te verbeteren en goede praktijken te gebruiken om kwetsbaarheden te vermijden, bedankt.
Antwoord #1
Om db.js eerst naar db.ts te migreren, moet je ervoor zorgen dat je de OracleDB TypeScript-declaraties hebt geïnstalleerd:
npm install @types/oracledb --save-dev
Laten we nu je db.js-bestand migreren naar db.ts:
import oracledb, { Connection } from 'oracledb';
const dbConfig: oracledb.ConnectionAttributes = {
user: 'admin',
password: '{censorship}',
connectString: 'DB{censorship}_high',
};
async function Open(sql: string, binds: any[], autoCommit: boolean): Promise<oracledb.Result<any>> {
let connection: Connection;
try {
connection = await oracledb.getConnection(dbConfig);
const result = await connection.execute(sql, binds, { autoCommit });
return result;
} finally {
if (connection) {
connection.close();
}
}
}
export { Open };
Verbeteringen en goede praktijken:
Het gebruik van async/await en Promises: Het gebruik van async/await en Promises is een goede gewoonte voor het omgaan met asynchrone bewerkingen zoals databaseverbindingen en -query's.
Correct omgaan met het vrijgeven van verbindingen: Ik heb een finally-blok toegevoegd om ervoor te zorgen dat de databaseverbinding correct wordt vrijgegeven, zelfs in geval van uitzonderingen.
Type-aanduidingen: TypeScript's statische typering helpt potentiële fouten tijdens de ontwikkeling op te sporen. Ik heb type-aanduidingen toegevoegd waar nodig.
Oracledb importeren: Importeer oracledb en Connection uit de module om type-informatie te krijgen voor betere typecontrole.
Connectie configureren: Het connectieconfiguratie-object (dbConfig) is nu gedefinieerd met de juiste typisering.
Gebruik van ES6 export: ik ben overgestapt op het gebruik van ES6 export in plaats van module.exports. Dit komt overeen met moderne JavaScript-praktijken en TypeScript.
Bestandsnaamconventies: Gewoonlijk krijgen TypeScript-bestanden een .ts-extensie.
