@apostrophecms/db-connect

中文文档
1.1.0发布于 2026/10/01MITCommonJS近 30 天下载 7202

ApostropeCMS 数据库连接库和垃圾堆/存储工具

中文使用文档
文档目录8 节
  1. 支持的连接 URL
  2. 蒙戈DB
  3. 邮递SQL
  4. SQL 点
  5. 多站点(多站点)
  6. 连接中
  7. 原子
  8. API 参考

@ apostrophicems/ db- 连接

@apostrophecms/db-connect 定义数据库连接 API ApostropheCMS 磁带控制系统它为MongoDB、PostgreSQL和SQLite提供适配器,包括: apos-db-dump 财务报告和审定财务报表 apos-db-restore 用于数据库迁移和备份的命令行工具.

Db-连接的API与蒙戈DB API的一个大子集相兼容. 然而,在这份介绍性说明之后,本文件将介绍: db 连接 API 以自己的条件。 对于需要跨越所有三个数据库的项目,只需使用此处定义的功能即可.

支持的连接 URL

蒙戈DB

mongodb://localhost:27017/mydb
mongodb+srv://user:[email protected]/mydb

标准MongoDB连接字符串. MongoDB适配器是围绕已存在的驱动器的薄薄包装.

邮递SQL

postgres://localhost:5432/mydb

单一数据库模式。 所有收藏作为表格存放于 public 计划.

SQL 点

sqlite:///path/to/database.db

使用基于文件的 SQLite 数据库 better-sqlite3。父目录是 如果不存在,则创建.

与其它不同的是,这其实不是一个 URL: 之后的一切 sqlite:// 是一个 文件系统路径, 完全按照写入这一点很重要,因为 文件系统路径不是 URL —— 它们不是% 编码的, 可能包含 字符 一个 URL 解析器处理为重要,在 Windows 上,它们以 驱动一个 URL 解析器读作 host:port。所以不要用% 编码 路径。 一个空间是空间 :

sqlite:///Users/jane/My Project/data/site.db

%20 这里表示一个字面百分比,2,0,而不是一个空间。 绝对和 相对路径工作,在Windows上,两个分隔符都这样做:

sqlite:///var/lib/mysite/data.db          absolute (POSIX)
sqlite://data/site.db                     relative to the working directory
sqlite://C:\Users\jane\site\data\site.db  absolute (Windows)
sqlite://C:/Users/jane/site/data/site.db  absolute (Windows, forward slashes)
sqlite:///C:/Users/jane/site/data/site.db absolute (Windows, file:// spelling)

内存数据库sqlite://:memory:)不支持——适配器 假设一个适合托管 ApostropeCMS 站点的持久商店.

多站点(多站点)

multipostgres://localhost:5432/shareddb-tenant1

设计用于AposropeCMS 多站点 模块。 在这个模式下,每个站点在一个单一的物理数据库内获得自己的PostgreSQL schema.

URL 路径在 最后一个连字符数字 :

  • 最后一个连字符之前的每件事都是真实的 PostgreSQL 数据库名称(shareddb(中文(简体) )
  • 之后的一切都是计划名称tenant1(中文(简体) )

每个方案在第一次使用时自动创建,在数据库被丢弃时被清理掉。 这提供了真正的多租户隔离——没有跨租户数据泄露——同时高效共享一个PostgreSQL实例.

连接中

const connect = require('@apostrophecms/db-connect');

const client = await connect('postgres://localhost:5432/mydb');
const db = client.db();
const articles = db.collection('articles');

// Insert a document
const result = await articles.insertOne({ title: 'Hello', status: 'draft' });

// Query documents
const docs = await articles.find({ status: 'draft' })
  .sort({ title: 1 })
  .limit(10)
  .toArray();

// Update a document
await articles.updateOne(
  { _id: result.insertedId },
  { $set: { status: 'published' } }
);

await client.close();

connect(uri) 返回客户端。 打电话 client.db() 获取数据库,然后 db.collection(name) 获取收藏.

原子

insertOne 财务报告和审定财务报表 deleteOne 永远是原子.

updateOne 无 upsert 当原子只使用下列运算符时:

  • $set, (中文(简体) ), $inc, (中文(简体) ), $unset, (中文(简体) ), $currentDate -- 总是原子
  • $push, (中文(简体) ), $pull, (中文(简体) ), $addToSet - 当所有值都是原子时 分级 (弦,数字,布尔斯). 对象或数组值返回到读-修改-写入.

这些运算符可以自由组合成一个 updateOne 和整个更新将是原子。 这涵盖了最常见的模式:计数器,状态旗,时间戳,字段清理,以及向/从数组中添加/删除项目.

以下操作不能保证为原子 并使用读取-修改-写入模式(文档被读取,更新在JavaScript中被应用,结果被回写) :

  • updateOne 与 $rename 或者说 upsert: true
  • updateOne 与 $push, (中文(简体) ), $pull,或 $addToSet 使用 非薪级 数值
  • updateMany, (中文(简体) ), findOneAndUpdate,以及 replaceOne

对于必须具有原子性质且以上未涵盖的操作,使用咨询锁定(apos.lock) 串行访问。 Aposrophe核心已经使用咨询锁定原子关系(例如, apos.lock.lock (见e/cn.4/sub.2/2000/l.31,附件).

API 参考

  • 数据库和客户端 —— 说 client.db(name),列出收藏,丢弃数据库
  • 收集方法 – CRUD 操作,光标和批量写入
  • 查询运算符 ——将文档与比较、逻辑、元素和阵列操作器过滤
  • 更新运算符 - 修改文档使用 $set, (中文(简体) ), $inc, (中文(简体) ), $push和更多
  • 索引 ——创建和管理指数,包括数字和日期类型
  • 合计 管道阶段和组积器
  • 倾出并恢复 用于备份和迁移的CLI工具和API方案

版本与发布记录

@apostrophecms/db-connect 共发布 7 个版本,首次发布于 2026/04/21;过去 12 个月发布了 7 个版本。

版本发布日期距今
1.1.0latest2026/10/011 个月前
1.0.22026/09/032 个月前
1.0.2-alpha.0alpha2026/09/032 个月前
1.0.12026/06/104 个月前
1.0.0-alpha.22026/06/104 个月前
1.0.02026/06/055 个月前

关于 @apostrophecms/db-connect 的常见问题

@apostrophecms/db-connect 是什么?

ApostropeCMS 数据库连接库和垃圾堆/存储工具

如何安装 @apostrophecms/db-connect?

在项目目录运行 npm install @apostrophecms/db-connect,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 apos-db-dump、apos-db-restore,可以用 npx apos-db-dump 直接运行。

@apostrophecms/db-connect 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/apostrophecms__db-connect 是否存在。

@apostrophecms/db-connect 支持 ESM 还是 CommonJS?

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

@apostrophecms/db-connect 可以商用吗?

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

@apostrophecms/db-connect 的下载量有多少?

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

@apostrophecms/db-connect 还在维护吗?

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