Skip to content

从 v1 升级 ​

Toshihiko v2 是对 v1 的 TypeScript 重构。升级重点是软件包结构和异步语法,然后再按需采用类型;Model、Query 和 Yukari 仍是原来的概念。

环境与软件包 ​

升级到 Node.js 22 或 24,并安装 scoped Adapter:

bash
npm install toshihiko@next @toshihiko/mysql-adapter@next
v1v2
toshihikotoshihiko
内置 MySQL 依赖@toshihiko/mysql-adapter
toshihiko-redis@toshihiko/redis-cache
toshihiko-memcached@toshihiko/memcached-cache
自定义 Adapter 基类@toshihiko/base-adapter
自定义 Cache 基类@toshihiko/base-cache

安装 MySQL Adapter 后,原来的 mysql dialect 字符串仍可使用。

Model 与 Promise ​

define(table, fields, options) 形状保持不变。JavaScript 运行时继续归一化 v1 字段别名;TypeScript 应使用 primaryKey、autoIncrement、allowNull 和 defaultValue。

typescript
const users = await User.where({ name: 'Alice' }).find();
await User.build({ name: 'Bob' }).insert();

Validator 可以直接返回消息,也可以返回消息的 Promise。

自定义 Model 方法 ​

JavaScript 仍可直接赋值:

javascript
User.findByName = function findByName(name) {
  return this.where({ name }).findOne();
};

TypeScript 应放入 methods,从而推断外部调用和方法内的 this:

typescript
const User = database.define('users', userSchema, {
  methods: {
    findByName(name: string) {
      return this.where({ name }).findOne();
    },
  },
});

Yukari 生命周期与 Cache ​

build() 创建新 Yukari,insert() 后仍保持新行语义。更新或删除前重新查询。Cache 建议直接构造 scoped 包实例,再放入 Toshihiko 选项;v1 模块形式仍保留 JavaScript 运行时兼容。

核对清单 ​

  • 字段与列映射、复合主键和自增回读;
  • 查询操作符、链式调用和返回形式;
  • Yukari 插入、更新、删除、保存、验证和 JSON;
  • 原始执行与事务连接参数;
  • Redis、Memcached 的 key、hit、miss 与失效;
  • 动态 Model 方法和自定义 Field Type。

仓库回归测试覆盖公开 v1 行为,但不能代替应用对自定义 Adapter、Cache 和原始 SQL 的集成测试。

Released under the MIT License.