@ 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' }],
});
所需资源
| 依赖性 | 版本 |
|---|---|
| 节点.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' 代码继续工作 :
npm install objection@npm:@abedmurrar/objection
然后读一下 断开更改 编辑 移徙指南。大多数变化都让查询像它们一样。 更严格的类型可以标出只因为旧类型松散而编译的代码 类型脚本页面 列出每次检查的选出.
文档
- 此软件包添加的内容 js,逐页.
- 文献网站:其他一切(模型,关系,查询,急于加载,图表,交易和验证)的指南和API参考出自反对.js.
- 更改日志 财务报告和审定财务报表 移徙指南。 。 。 .
- 捐款。 。 。 .
办法
和反对一样 Js 这比不上经典的ORM 关系查询构建器:您在查询中工作,而不是在隐藏 SQL 对象图中工作.
- 您可以得到一个定义模型及其关系的宣示方式, SQL 获取和更改行的全部能量, 急于加载, 图表插入和提升, 交易, 可选的 JSON schema 验证, 以及将文档存储在 JSON 列中的方法 .
- 您没有自己的查询语言( 查询构建器是 knex,以及
raw()或者从模型中产生的计划: knex 迁移 做那个工作.
贷项
这个项目建立在萨米·克什基姆基及其许多贡献者反对的基础上,维持在芬奇特。 它的设计,它的API,它的大部分代码和大部分文件都来自那里. 谢谢.
根据麻省理工学院的许可释放,如反对.js.