1前言
达梦 Node.js 数据库驱动支持 ORM 框架 typeorm,提供方言包 typeorm-dm 进行适配。方言包安装方法:npm install typeorm-dm。安装方法将自动安装依赖包 dmdb。
达梦 Node.js 数据库驱动支持 SQL 查询构建器 knex,提供方言包 knex-dm 进行适配。方言包安装方法:npm install knex-dm。安装方法将自动安装依赖包 lodash 和 dmdb。
2前期准备
安装nodejs环境,当前测试环境nodejs版本为v24.9.0。
2.1先初始化package.json(如果选空项目)
npm init -y
2.2安装TYPEORM相关包
npm install typeorm reflect-metadata # TypeORM本体
npm install dmdb # 达梦官方驱动
npm install typeorm-dm # 官方方言包
2.3安装KNEX相关包
npm install knex dmdb # knex 本体 + 达梦驱动
npm install knex-dm # 达梦方言包
2.4查看是否安装成功
npm list dmdb typeorm-dm knex-dm typeorm reflect-metadata
3测试代码准备
3.1TYPEORM测试连接
const { DmdbDataSource } = require("typeorm-dm");
const AppDataSource = new DmdbDataSource({
type: "oracle",
innerType: "dmdb",
url: "dm://SYSDBA:SYSDBa111@localhost:5236?schema=SYSDBA&loginEncrypt=false",
entities: [],
synchronize: false,
logging: true,
});
AppDataSource.initialize()
.then(() => {
console.log("✅ 连接成功!");
process.exit(0);
})
.catch(err => {
console.error("❌ 连接失败:", err);
process.exit(1);
});
3.2KNEX测试连接
const { DmdbDataSource } = require("typeorm-dm");
const AppDataSource = new DmdbDataSource({
type: "oracle",
innerType: "dmdb",
url: "dm://SYSDBA:SYSDBa111@localhost:5236?schema=SYSDBA&loginEncrypt=false",
entities: [],
synchronize: false,
logging: true,
});
AppDataSource.initialize()
.then(() => {
console.log("✅ 连接成功!");
process.exit(0);
})
.catch(err => {
console.error("❌ 连接失败:", err);
process.exit(1);
});
3.3TYPEORM测试插入
const { DmdbDataSource } = require("typeorm-dm");
const { EntitySchema } = require("typeorm");
// 直接在同一个文件中定义实体
const PhotoSchema = new EntitySchema({
name: "Photo",
columns: {
id: {
primary: true,
type: "int",
generated: true
},
name: {
type: "varchar",
length: 255
}
}
});
const AppDataSource = new DmdbDataSource({
type: "oracle",
innerType: "dmdb",
host: "localhost",
port: 5236,
username: "SYSDBA",
password: "SYSDBa111",
schema: "SYSDBA",
url: "dm://SYSDBA:SYSDBa111@localhost:5236?schema=SYSDBA",
entities: [PhotoSchema],
synchronize: true,
logging: false,
})
AppDataSource.initialize()
.then(async () => {
let photoRepo = AppDataSource.getRepository("Photo")
let photo = { name: "photo1" }
await photoRepo.save(photo)
let allPhoto = await photoRepo.find()
console.log(allPhoto)
await AppDataSource.destroy()
})
.catch((error) => console.log(error))
3.4KNEX测试插入
async function main() {
const knex = require('knex')({
client: require('knex-dm'),
connection: {
connectString: 'localhost:5236',
user: 'SYSDBA',
password: 'SYSDBa111',
schema: 'SYSDBA',
},
});
// 创建表
await knex.schema.createTableIfNotExists('USERTEST', (table) => {
table.increments('ID'); // 自增INT列
table.string('USER_NAME'); // VARCHAR列
});
// 插入
await knex('USERTEST').insert({'USER_NAME': 'Tom'});
// 自增列手动插入必须指定选项
await knex('USERTEST', {identityInsert: true}).insert({'ID': 2, 'USER_NAME': 'Jack'});
// 查询
let result = await knex('USERTEST').select('ID', 'USER_NAME').where({'ID': 1});
console.log(result); // 输出: [ { ID: 1, USER_NAME: 'Tom' } ]
await knex.destroy();
}
main();
文章
阅读量
获赞
