@antelopejs/interface-database

中文文档
0.3.0发布于 2026/11/04Apache-2.0TypeScriptCommonJS零依赖构建来源已验证近 30 天下载 1.5万

AQL, the AntelopeJS database-agnostic query builder: schemas, CRUD, joins, aggregations and change feeds

原始使用文档
文档目录8 节
  1. What it offers
  2. Implementations
  3. Install
  4. Quick start
  5. Documentation
  6. Compatibility
  7. Contributing
  8. License

@antelopejs/interface-database

npm License Discord Docs

AQL (Antelope Query Language) is the database-agnostic query builder of AntelopeJS. You write a chainable, typed query once, and any database module that implements the interface runs it.

What it offers

  • Schema declares tables, fields and indexes. Each schema can hold several isolated instances.
  • Table, Selection and SingleSelection insert, read, update and delete documents.
  • Stream filters, maps, joins, groups and aggregates. ValueProxy builds the expressions inside them.
  • changes() streams inserts, updates and deletions as they happen.
  • Queries are lazy. Nothing runs until you await a query, call .run() or iterate it.

Implementations

ModuleNotes
@antelopejs/mongodbMongoDB. Also implements @antelopejs/interface-mongodb.
@antelopejs/rethinkdbRethinkDB. Also implements @antelopejs/interface-rethinkdb.

Install

Add the interface to the module that runs queries:

pnpm add @antelopejs/interface-database

Then add an implementation to the project:

ajs project modules add @antelopejs/mongodb

Quick start

import { Schema } from "@antelopejs/interface-database";

interface Novel {
  _id?: string;
  title: string;
  pageCount: number;
}

const schema = new Schema<{ novels: Novel }>("library", {
  novels: {
    fields: { title: "string", pageCount: "number" },
    indexes: { pageCount: {} },
  },
});

const novels = schema.instance().table("novels");

export async function addNovel(title: string, pageCount: number) {
  return await novels.insert({ title, pageCount });
}

export async function listLongNovels() {
  return await novels
    .filter((novel) => novel.key("pageCount").ge(300))
    .orderBy("pageCount", "desc");
}

Callbacks such as the filter above receive a ValueProxy, not a document. The callback runs once, when the query is built, and the query records only the ValueProxy calls it makes.

Documentation

Compatibility

The package declares this @antelopejs/* peer dependency:

PackageSupportedTested with
@antelopejs/interface-core>=0.2.4 <1.0.00.2.4

Contributing

Read CONTRIBUTING.md before you open a pull request. The local checks are:

pnpm install
pnpm lint
pnpm test

License

Apache-2.0

版本与发布记录

@antelopejs/interface-database 共发布 17 个版本,首次发布于 2026/03/23;过去 12 个月发布了 17 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.0latest2026/11/041 天前
0.2.02026/10/298 天前
0.1.112026/10/2413 天前
0.1.102026/10/1720 天前
0.1.92026/10/1324 天前
0.1.82026/09/281 个月前

关于 @antelopejs/interface-database 的常见问题

@antelopejs/interface-database 是什么?

AQL, the AntelopeJS database-agnostic query builder: schemas, CRUD, joins, aggregations and change feeds

如何安装 @antelopejs/interface-database?

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

@antelopejs/interface-database 支持 TypeScript 吗?

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

@antelopejs/interface-database 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@antelopejs/interface-database 可以商用吗?

@antelopejs/interface-database 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@antelopejs/interface-database 的下载量有多少?

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

@antelopejs/interface-database 还在维护吗?

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