# @abedmurrar/objection 中文文档

规范地址：https://npmcn.com/package/%40abedmurrar/objection/

版本：4\.2\.1
npm 元数据更新时间：2026-11-04T00:01:22.456Z
中文译文更新时间：2026-11-06T09:27:37.345Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40abedmurrar/objection
原文对照：https://npmcn.com/package/%40abedmurrar/objection/?lang=original
项目主页：https://abedmurrar.github.io/objection.js/
源码仓库：https://github.com/abedmurrar/objection.js

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：957 kB，194 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：3 个
- peer 依赖：knex \>=3\.3\.0
- 首次发布：2026-10-20T15:17:18.430Z
- 最新版本发布：2026-11-04T00:01:22.083Z
- 近 30 天下载量：3587（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：27（近 12 个月 27 个）

## 中文简介

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

## 安装

```sh
npm install @abedmurrar/objection
```

也可以使用：`pnpm add @abedmurrar/objection`、`yarn add @abedmurrar/objection`、`bun add @abedmurrar/objection`

## README

[![Tests](https://github.com/abedmurrar/objection.js/actions/workflows/test.yml/badge.svg)](https://abedmurrar.github.io/objection.js/) [![Docs](https://img.shields.io/badge/docs-abedmurrar.github.io-blue)](https://abedmurrar.github.io/objection.js/) [![npm](https://img.shields.io/npm/v/@abedmurrar/objection)](https://www.npmjs.com/package/@abedmurrar/objection)

# @ abedmurrar/ 反对

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

它开始作为反对的分叉.js 3.1.5 并保持它的API,所以反对. js 代码运行在它除了 [断开更改](https://abedmurrar.github.io/objection.js/fork/breaking-changes),其中多数会修正读取或更改错误行的查询.

```sh
npm install @abedmurrar/objection knex
```

## 为什么这个

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

## 仔细看看

```ts
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' }],
});
```

## 所需资源

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

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

## 来自反对

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

```sh
npm install objection@npm:@abedmurrar/objection
```

然后读一下 [断开更改](https://abedmurrar.github.io/objection.js/fork/breaking-changes) 编辑 [移徙指南](https://abedmurrar.github.io/objection.js/release-notes/migration)。大多数变化都让查询像它们一样。 更严格的类型可以标出只因为旧类型松散而编译的代码 [类型脚本页面](https://abedmurrar.github.io/objection.js/fork/typescript) 列出每次检查的选出.

## 文档

-   [此软件包添加的内容](https://abedmurrar.github.io/objection.js/fork/) js,逐页.
-   **[文献网站](https://abedmurrar.github.io/objection.js/)**:其他一切(模型,关系,查询,急于加载,图表,交易和验证)的指南和API参考出自反对.js.
-   [更改日志](https://abedmurrar.github.io/objection.js/release-notes/changelog) 财务报告和审定财务报表 [移徙指南](https://abedmurrar.github.io/objection.js/release-notes/migration)。 。 。 .
-   [捐款](https://abedmurrar.github.io/objection.js/guide/contributing)。 。 。 .

## 办法

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

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

## 贷项

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

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

## 常见问题

### @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 和提交记录判断。

