5.2.3 • Published 8 months ago

@zenweb/mysql v5.2.3

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

ZenWeb MySQL Module

提供 MySQL 单数据库服务器以及集群的连接池集成功能。 并提供 Context 进行数据库连接的前置处理。

安装

npm install @zenweb/mysql

快速使用

import { create } from 'zenweb';
import modMySQL from '@zenweb/mysql';

const app = create();

app.setup(modMySQL({
  pools: {
    // 添加数据库服务器配置
    DB1: {
      host: '127.0.0.1',
      port: 3306,
      user: 'root',
      password: '',
      database: 'test',
      charset: 'utf8mb4',
      timezone: '+08:00',
      connectionLimit: 100,
    },
    // 如需集群功能可以继续添加 MySQL 配置
    // DB2: { ... },
    // ....
  }
}));

app.start();

可以直接通过 app.mysql 或者 ctx.mysql 来使用连接池

使用 Context 前置处理

:::tip 注意 如果使用 withContext 前置处理,数据库连接池对象只能在 Context 中使用。 :::

import { Query } from 'mysql-easy-query';

app.setup(mysql({
  pools: {
    // 数据库服务器配置这里省略,参考上面代码
  },
  // 在每次获取连接之前回调
  // 所属数据库服务器切换
  getPoolConnectionBefore(opt) {
    return {
      // opt 参数为传入的原始集群选择规则
      // 返回新的集群选择规则
      pattern: opt?.pattern || '*',
      selector: opt?.selector,
    };
  },
  // 成功取得数据库连接后回调
  getPoolConnectionAfter(conn) {
    return conn; // conn 为已取得的 MySQL 连接
  },
}));

查询数据库

import { mapping } from 'zenweb';
import { $mysql } from '@zenweb/mysql';

export class TestController {
  @mapping()
  async mysql() {
    // 简单查询
    return await $mysql.query('SELECT 1+1');
  }

  // 使用事物
  @mapping()
  async transaction(ctx: Context) {
    return await $mysql.transaction(async tx => {
      await tx.query('UPDATE some SET a = 1');
      await tx.query('UPDATE other SET b = 2');
      return 'OK';
    });
  }

  // 使用指定的数据库服务器
  @mapping()
  async cluster() {
    return await $mysql.of('DB2').query('SELECT * FROM some');
  }
}
5.2.3

8 months ago

5.2.2

8 months ago

5.2.1

8 months ago

5.2.0

8 months ago

5.1.0

8 months ago

5.0.0

8 months ago

4.1.2

1 year ago

4.1.1

1 year ago

4.1.0

2 years ago

4.0.0

2 years ago

4.0.0-a1

2 years ago

3.6.1

2 years ago

3.6.0

2 years ago

3.4.0

2 years ago

3.3.0

2 years ago

3.2.0

2 years ago

3.1.0

2 years ago

3.5.2

2 years ago

3.5.1

2 years ago

3.5.0

2 years ago

3.0.0

2 years ago

2.5.0

3 years ago

1.4.0

4 years ago

1.3.0

4 years ago

2.3.0

3 years ago

2.0.2

3 years ago

2.4.1

3 years ago

2.4.0

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago