@antelopejs/mongodb
羚羊JS的蒙哥DB后端. 它和官员一起运行MongoDB数据库接口的查询 mongodb 驱动程序,并将驱动程序的客户端提供给直接需要的模块.
部分 羚羊JS用于 羚羊JS 隐形物,用于您的 PostgreSQL 、 MongoDB 或 RethinkDB 数据库的开源后台.
接口
| 接口 | 文档 |
|---|---|
@antelopejs/interface-database | 数据库 |
@antelopejs/interface-mongodb | 蒙戈DB |
@antelopejs/interface-database-catalog | 外部模式 |
数据库界面页面文档计划,表格,查询,变化素材,以及原子突变.
安装
ajs project modules add @antelopejs/mongodb
命令写入模块的默认配置. 它连接到 mongodb://localhost:27017 并使用数据库 antelopejs。 。 。 .
配置
import { defineConfig } from "@antelopejs/interface-core/config";
export default defineConfig({
name: "my-project",
modules: {
mongodb: {
source: {
type: "package",
package: "@antelopejs/mongodb",
version: "^1.4.2",
},
config: {
url: "mongodb://localhost:27017/?replicaSet=rs0",
database: "my-project",
options: { maxPoolSize: 10 },
},
},
},
envOverrides: {
MONGODB_URL: "modules.mongodb.config.url",
},
});
| 密钥 | 说明 |
|---|---|
url | MongoDB 连接字符串 . |
database | 存储每个计划库的数据库. |
options | 可选 MongoClientOptions 模块传递给驱动程序. |
mode | owned (默认)或 external一个自有实例创建了自己的收藏,并将其范围扩大到实例。 一个外部实例为它没有创建的数据库服务。 见 外部模式。 。 。 . |
statementTimeoutMs | 每个外部实例的可选服务器侧时限, 以 maxTimeMS。它必须是正的安全整数. |
catalog | { enabled?: boolean }设置外部实例是否解答外部开发目录 . |
外部实例需要非空 url 财务报告和审定财务报表 database。它读取和撰写客户端自己收藏的文档,并且从未改变其结构。 见 外部模式。 。 。 .
更改种子使用 MongoDB 更改流,这些流需要复制集 。 单节点复制集在开发中已经足够了.
快开始
在存储数据的模块中,添加数据库接口:
pnpm add @antelopejs/interface-database
那就跟着 数据库接口指南 以宣布一个计划并查询。 同样的代码运行在 @antelopejs/postgres 财务报告和审定财务报表 @antelopejs/rethinkdb。 。 。 .
直接给司机打电话,请添加 @antelopejs/interface-mongodb数字 :
import { GetClient } from "@antelopejs/interface-mongodb";
const client = await GetClient();
const users = client.db("my-project").collection("users");
存储布局
- 每个计划表都是一个集合,
<schemaId>__<table>,每个例子的 计划分享。 每个文档将其实例存储于_instance。 。 。 . _id因此使用全球独特的记录身份.- 每个已宣布的索引
<name>成为MongoDB 索引<name>__i他们的第一个领域是_instance中的索引crossInstance: true也获得索引<name>无前缀,用于CROSS_INSTANCE查询。 没有它,这些查询仍然有效,但是他们不能使用一个索引并记录每个索引一次的警告. - 已声明索引
unique: true实现<name>__i索引独有,所以每个实例都有一个键。 交叉指数从来不是独一无二的. 换旗会重建索引. 创建独有索引失败, 而实例有重复 。 Schema初始化后记录出错并重试,直到去除. - 当MongoDB拒绝为重复的密钥写作时( 代码 1100)
_id或在一个独特的索引上,模块将DuplicateKeyError的界面. - 原子突变使用第二个客户端
retryWrites财务报告和审定财务报表retryReads关了.
Schema初始化只在两个案例中降低一个指数. 该索引有模块在MongoDB中给出的宣布索引的名称(<name>__i,或 <name> 用于交叉索引),但其他字段或其他独有性。 或者该指数有这样一个指数的领域,但另一个独特性。 任何其他指数,例如指数 <name> 与所宣布的字段相对 _instance。要删除一个没有计划声明的索引,请手动删除,例如 db.getCollection("<schemaId>__<table>").dropIndex("<name>")。 。 。 .
文档
- 数据库 文档
@antelopejs/interface-database与本模块执行的合同. - 蒙戈DB 文档
@antelopejs/interface-mongodb与本模块执行的合同. - 外部模式 解释模块如何服务于它没有创建的数据库及其目录.
- 配置 文档模块来源,
config区块和配置变量antelope.config.ts。 。 。 .
兼容性
| 软件包 | 支助 | 测试过 |
|---|---|---|
@antelopejs/interface-core | >=0.2.4 <1.0.0 | 0.2.4 |
@antelopejs/interface-database | >=0.3.0 <0.4.0 | 0.3.0 |
@antelopejs/interface-database-catalog | >=0.0.3 <0.1.0 | 0.0.3 |
@antelopejs/interface-mongodb | >=0.0.6 <1.0.0 | 0.0.6 |
.nvmrc 设置用于开发的节点。 这个 dependencies 联 合 国 package.json 设置 mongodb 驾驶员. MONGODB_VERSION 内 src/test/antelope.test.ts 设置 MongoDB 服务器发布测试复制集.
捐款
pnpm install
pnpm lint
pnpm format:check
pnpm knip
pnpm test # build, then run the owned and external suites against an in-memory replica set
测试开始于 MongoDB mongodb-memory-server,在第一次运行时下载服务器二进制。 他们还管理着一套共用的相配套装 @antelopejs/interface-database。 。 。 .
读取 捐款准则 在你打开拉动请求之前.