JIT 映射器
JIT 映射器默认已禁用。使用 jit 选项启用它们:
import { drizzle } from 'drizzle-orm/...';
const db = drizzle({ client, jit: true });在初始化时,Drizzle 会运行一个兼容性检查,测试当前运行时中 Function 构造函数是否可用。如果不可用(例如某些边缘运行时或受 CSP 限制的环境),它会回退到常规映射器,并在控制台输出警告。
jit 选项可在每个驱动的配置中使用
什么是 JIT 映射器?
JIT(即时)映射器是动态生成的 JavaScript 函数,用于将数据库行转换为 JS 对象。与其在运行时为每一行都解释列元数据,JIT 映射器不如一次编译出一个专用函数,并将其复用于结果集中所有行。
为什么需要它们?
普通的 Drizzle ORM 映射器会针对每一行数据遍历列元数据:
对于每一行:
对于每一列:
→ 查找解码器
→ 检查是否存在 codec
→ 检查值是否为 null
→ 如有需要则应用 codec
→ 如有需要则应用解码器
→ 访问嵌套路径
→ 赋值到结果对象当行数达到成千上万时,这种解释式开销就会累积起来。JIT 映射器通过生成一个函数来消除这部分开销,在生成时就把所有元数据查找、空值检查以及嵌套对象构造都硬编码进函数体中