3.1.0 • Published 2 years ago

@zenweb/orm v3.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

ZenWeb ORM module

ZenWeb ZenORM

ZenORM Repositories 集成

安装

npm install @zenweb/mysql @zenweb/orm
npm install @zenorm/generate @zenorm/generate-mysql --save-dev

配置

package.jsonscripts 中增加如下代码,用于执行 dbgen 命令

{
  "scripts": {
    "dbgen": "zenorm-generate .dbgen.json"
  }
}

创建文件 .dbgen.json 用于生成数据库结构代码时连接到指定数据库

提示:运行时并不使用此配置

{
  "host": "localhost",
  "port": 3306,
  "user": "root",
  "password": "",
  "database": "zenorm_test",
  "outputDir": "./model",
  "generateRepositories": true,
  "declareRepositoriesToModules": [
    "@zenweb/core.Core.repositories"
  ]
}

生成数据库结构代码

运行命令开始生成数据库结构代码

npm run dbgen

项目配置

编辑项目入口代码 src/index.ts

import { create } from 'zenweb';
import modMySQL from '@zenweb/mysql';
import modORM from '@zenweb/orm';
import { Repositories } from './model';

export const app = create();

// 安装 MySQL 支持
app.setup(modMySQL({
  pools: {
    // 这里的数据库配置用于运行时
    MASTER: {
      host: 'localhost',
      port: 3306,
      user: 'root',
      password: '',
      database: 'test',
      charset: 'utf8mb4',
      timezone: '+08:00',
    },
    // 如果使用集群,主从分离等场景可以继续添加
    // SLAVE1: {} ...
  }
}));

// 设置 ORM
app.setup(modORM({
  coreQuery: () => app.mysql!,
  // contextQuery: (ctx) => app.mysql,
  Repositories,
}));

代码中调用

import { mapping } from 'zenweb';

export class TestController {
  @mappping()
  dbtest(core: Core) {
    const { UserRepository } = core.repositories;
    return UserRepository.find({ id: 1 }).get();
  }
}