@abedmurrar/objection

中文文档
4.2.1发布于 2026/11/04MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3587

一个快速,严格的SQL ORM为Node.js和TypeScript打入,以 knex 为基础:模型,关系,急于加载,在 Postgres, MySQL, MariaDB 和 SQLite 上的图上提升和交易. 维持了反对的分叉.

中文使用文档
文档目录7 节
  1. 为什么这个
  2. 仔细看看
  3. 所需资源
  4. 来自反对
  5. 文档
  6. 办法
  7. 贷项

Tests Docs npm

@ abedmurrar/ 反对

一个快速,严格输入的用于节点.js的SQL ORM,基于 纳克斯。 。 。 . 一次定义您的模型和关系,然后用 SQL 的全能查询它们: 急速加载, 图表插入和上行, 交易, JSON 列和表达式, 以及知道每个查询返回什么的类型 .

它开始作为反对的分叉.js 3.1.5 并保持它的API,所以反对. js 代码运行在它除了 断开更改,其中多数会修正读取或更改错误行的查询.

npm install @abedmurrar/objection knex

为什么这个

  • 知道你装了什么. 关系推断自 relationMappings,查询结果只包含所获取的查询的关系,以及关系表达式、修改名称和 Model.ref() 在编译时检查列。 见 类型脚本。 。 。 .
  • 快点. 与反对相比,反对本身的查询工作需要13%至19%的时间, toJSON() 减少44%,验证减少55%,在新交易中验证后插入91%,SQL和结果相同. 见 业绩。 。 。 .
  • MySQL 和 MariaDB 作为一等数据库字段表达式 whereJson* 方法、分批插入和 fn.* 每个 MySQL 8.4 函数的助手。 MariaDB 10.6和11.4在CI测试. 见 MySQL 和马里亚DB。 。 。 .
  • 无生 SQL 表达式一样 Pet.ref('age').gte(3), (中文(简体) ), fn.count().filter(...), (中文(简体) ), fn.case() 和窗口函数。 见 表达式。 。 。 .
  • 更安全点. JSON 字段密钥被逃脱(在反对中.js 3.1.5允许SQL注射), a orWhere() 无法再匹配其他关系所有者的行 for() 不再被沉默地忽略。 见 中断更改。 。 。 .
  • 现代. 节点.js 24+,ES模块和普通JS 来自一个包,knex 3.3,knex方法的反对没有,没有lodash和没有蓝鸟,以及 npm audit 没有报告 出处用严格的TypeScript来书写,并用TypeScript 7.

仔细看看

import { Model, defineRelations } from '@abedmurrar/objection';
import { knex } from 'knex';

Model.knex(knex({ client: 'pg', connection: process.env.DATABASE_URL }));

class Pet extends Model {
  static tableName = 'pets';

  id!: number;
  name!: string;
  ownerId!: number;
}

class Person extends Model {
  static tableName = 'persons';

  id!: number;
  firstName!: string;

  static relationMappings = defineRelations(() => ({
    pets: {
      relation: Model.HasManyRelation,
      modelClass: Pet,
      join: { from: 'persons.id', to: 'pets.ownerId' },
    },
  }));
}

const people = await Person.query().where('firstName', 'like', 'J%').withGraphFetched('pets');

people[0].pets[0].name; // `pets` is in the type because the query loaded it
people[0].firstName;

// A person and their pets in one insert.
await Person.query().insertGraph({
  firstName: 'Jennifer',
  pets: [{ name: 'Doggo' }],
});

所需资源

依赖性版本
节点.js24个或较新(24个和26个测试)
纳克斯3.3或更新
MySQL 数据8.0.17 或更新(在8.4号试验中测试 mysql2(中文(简体) )
马里亚DB10.6或较新(在10.6和11.4上测试) mariadb(中文(简体) )
SQL 点3.35或较新的批次插入

Postgres在当前发行时进行测试.

来自反对

在名称下安装软件包 objection,和现有 import { Model } from 'objection' 代码继续工作 :

npm install objection@npm:@abedmurrar/objection

然后读一下 断开更改 编辑 移徙指南。大多数变化都让查询像它们一样。 更严格的类型可以标出只因为旧类型松散而编译的代码 类型脚本页面 列出每次检查的选出.

文档

办法

和反对一样 Js 这比不上经典的ORM 关系查询构建器:您在查询中工作,而不是在隐藏 SQL 对象图中工作.

  • 您可以得到一个定义模型及其关系的宣示方式, SQL 获取和更改行的全部能量, 急于加载, 图表插入和提升, 交易, 可选的 JSON schema 验证, 以及将文档存储在 JSON 列中的方法 .
  • 您没有自己的查询语言( 查询构建器是 knex,以及 raw() 或者从模型中产生的计划: knex 迁移 做那个工作.

贷项

这个项目建立在萨米·克什基姆基及其许多贡献者反对的基础上,维持在芬奇特。 它的设计,它的API,它的大部分代码和大部分文件都来自那里. 谢谢.

根据麻省理工学院的许可释放,如反对.js.

版本与发布记录

@abedmurrar/objection 共发布 27 个版本,首次发布于 2026/10/20;过去 12 个月发布了 27 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
4.2.1latest2026/11/042 天前
4.2.02026/11/042 天前
4.1.42026/11/042 天前
4.1.32026/11/042 天前
4.1.22026/11/042 天前
4.1.12026/11/042 天前

其他发布通道:next → 4.0.0-beta.11。

关于 @abedmurrar/objection 的常见问题

@abedmurrar/objection 是什么?

一个快速,严格的SQL ORM为Node.js和TypeScript打入,以 knex 为基础:模型,关系,急于加载,在 Postgres, MySQL, MariaDB 和 SQLite 上的图上提升和交易. 维持了反对的分叉.

如何安装 @abedmurrar/objection?

在项目目录运行 npm install @abedmurrar/objection,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:knex(>=3.3.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@abedmurrar/objection 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@abedmurrar/objection 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@abedmurrar/objection 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@abedmurrar/objection 可以商用吗?

@abedmurrar/objection 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@abedmurrar/objection 的下载量有多少?

根据 npm 官方下载统计,@abedmurrar/objection 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,587 次,日均约 120 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@abedmurrar/objection 还在维护吗?

最新版本 4.2.1 发布于 2026/11/04(2 天前);至今共发布 27 个版本,其中过去 12 个月发布了 27 个;首次发布于 2026/10/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。