安装
ts-grm 由两个包组成,都需要安装:
@ts-grm/core——模型、视图(View)、Input DTO、查询 DSL 的类型与运行时,与数据库无关;@ts-grm/sql——SQL 执行、驱动、事务,真正的数据库后端。
任选一个与你项目一致的包管理器:
# npm
npm install @ts-grm/core @ts-grm/sql
# pnpm
pnpm add @ts-grm/core @ts-grm/sql
# yarn
yarn add @ts-grm/core @ts-grm/sql
# bun
bun add @ts-grm/core @ts-grm/sql
要求 Node.js ≥ 18(bun 等兼容运行时亦可)。ts-grm 零代码生成、无运行时反射,安装后不需要任何生成步骤或配置文件。
冒烟测试:安装好了吗
把下面的脚本加入工作区并运行(示例所需的 sqlClient 已准备好,详见「认识沙盒」页)。跑通就说明环境就绪——代码里的模型、视图、查询,接下来三页会一行行拆解,现在不用完全看懂:
// 冒烟测试:输出种子数据即安装成功
// ① 导入:model/prop 建模型、dto 建视图;sqlClient 是示例提供的客户端
import { model, prop, dto } from '@ts-grm/core'
import { sqlClient } from './infra/sql-client'
// ② 声明模型:Book 表(id/name/edition/price 四列)
// model(表名, 主键属性名, class),字段即列
const Book = model("Book", "id", class {
id = prop.i64() // 主键,64 位整数
name = prop.str(50) // 定长字符串(50)
edition = prop.i32() // 32 位整数
price = prop.num(10, 2) // 定点数 num(总长, 小数位)
})
// ③ 声明视图:本次查询只取 id/name/price 三列
const BookView = dto.view(Book, c => [
c.id,
c.name,
c.price,
])
// ④ 执行查询:全表取回(无 where/orderBy 时即 SELECT 全部)
const rows = await sqlClient.createQuery(Book, (q, book) => {
return q.select(book.fetch(BookView)) // 按视图取形
}).fetchList() // 收尾:返回数组
console.log(rows) // 结果面板输出种子数据
在沙盒里点「运行」,右侧结果面板应显示 book 表的 3 行种子数据。
下一步
环境就绪。下一节从零声明第一个模型。