@ cocreate/ crud- 客户端
一个高性能、数据库不可知客户端的CRUD引擎,用于使用单一的统一有效载荷进行查询、同步和持续应用数据。 它提供离线第一架构,透明地同步本地和远程存储提供商,并与CoCreate实时协作生态系统进行无缝整合. 单一的CRUD请求可以同时瞄准一个或多个存储提供者,允许应用程序在分布式数据库之间保持同步数据,并具有最小的应用逻辑.
文档
对于完整的API参考文献,存储适配器配置,同步策略,以及高级示例,参考了CoCreate CRUD客户端文档.
目录
特征
- 统一 CRUD API : 使用一致的有效载荷结构创建、读取、更新和删除数据,而不论潜在的存储提供者如何.
- 多堆放执行 : 同步执行针对一个或多个存储提供者的 CRUD 操作 .
- 并行数据库同步 : 当指定多个存储提供者时,操作同时执行,以保持分布式数据库同步.
- 离线- 第一架构 : 继续使用本地存储提供者进行下线时读取并写入数据.
- 实时同步 : 与CoCreate Socket生态系统无缝地集成,使客户端和服务器的数据同步.
- 数据库不可知论 : 支持索引DB,SQLite,MongoDB,PostgreSQL,MySQL,Firestore,以及通过统一的有效载荷格式的额外适配器.
- 优化更新 : 本地操作在背景中发生远程同步时立即执行.
- 无国籍操作 : 每个 CRUD 请求都是完全自成一体的,使得请求容易进行序列化,排队,重试,并重放.
安装
npm install @cocreate/crud-client
使用量
初始化客户端
import crud from "@cocreate/crud-client";
await crud.init({
organization_id: "64b9a32e18f21bc56789abcd",
host: window.location.host
});
读取数据
const response = await crud.send({
method: "object.read",
array: "users"
});
console.log(response);
从特定存储提供者读取
const response = await crud.send({
method: "object.read",
array: "users",
storage: "mongodb"
});
何时 storage 是字符串,操作只针对指定的存储提供者执行.
在单一存储提供者中创建数据
await crud.send({
method: "object.create",
array: "users",
storage: "mongodb",
object: [{
name: "John Doe",
email: "[email protected]"
}]
});
在多个存储提供者中创建数据
await crud.send({
method: "object.create",
array: "users",
storage: [
"mongodb",
"sqlite"
],
object: [{
name: "John Doe",
email: "[email protected]"
}]
});
何时 storage 是一个阵列,同一有效载荷在每一个匹配的存储提供者之间平行执行。 这使得应用程序可以使用一个单一的CRUD请求对多个数据库的数据进行同步.
更新数据
await crud.send({
method: "object.update",
array: "users",
storage: [
"mongodb",
"sqlite"
],
object: [{
_id: "64b9a32e18f21bc56789abcd",
status: "active"
}]
});
删除数据
await crud.send({
method: "object.delete",
array: "users",
storage: "mongodb",
object: [{
_id: "64b9a32e18f21bc56789abcd"
}]
});
如何运作
- CRUD的每一项请求均被表述为标准有效载荷物体.
- 客户端决定由哪个存储提供者处理请求.
- 本地供应商立即执行快速应用响应.
- 远程提供者通过活动 Coreate 通信层传输请求.
- 当指定多个存储提供者时,操作会同时执行.
- 无论数据库技术如何,答复都趋于一致.
- 离线突变在恢复连接后自动排队并同步.
结构和有效载荷光谱
统一有效载荷对象Schema
| 财产 | 类型 | 说明 |
|---|---|---|
method | String | CRUD 操作 (object.create, (中文(简体) ), object.read, (中文(简体) ), object.update, (中文(简体) ), object.delete, (中文(简体) ), array.read(见a/c.5/49/70,附件). |
array | String | 收集、表格或数据集名称. |
object | Array<Object> | 要创建、更新或删除的文档. |
storage | String | Array<String> | 目标存储提供者。 当提供数组时,所有匹配的提供者都会平行执行请求. |
filter | Object | 查询过滤器、限制、排序、索引、预测和搜索标准. |
organization_id | String | 多租户工作空间标识符. |
离线同步
CRUD客户端采用离线先行执行模式.
无法连接时 :
- 阅读继续使用本地存储提供者.
- 写作在当地进行.
- 待发突变自动排队.
- 连接返回时同步排队操作 .
- 应用程序仍然具有响应性,而不需要不断联网.
储存供应商
这个 storage 属性决定 CRUD 操作在哪里执行 .
存储可能参考配置的提供者, 如MongoDB, SQLite, IndexedDB, PostgreSQL, 或任何自定义适配器 .
storage: "primary"
存储名是由您的应用程序配置定义的别名 .
多个存储提供者可以同时被锁定.
storage: [
"primary",
"backup",
"analytics"
]
或者说
storage: [
"mongodb",
"sqlite"
]
当提供一系列存储提供者时,CRUD客户端在每一个匹配的提供者之间同时执行同样的操作,允许应用程序在多个数据库之间保持同步数据,同时有一个请求.
通知
发布笔记,新功能,突破变化,并发布迁移指南在项目的"CHangGELOG"和"GitHub"发布会上.
路线图
即将作出的改进包括:
- CRDT 基于冲突的解决
- 背景同步工人
- 三角洲同步
- 交易分批
- 图表查询支持
- 可插式存储适配器
- 边缘同步
- 高级解决冲突战略
如何贡献
我们鼓励为我们的图书馆捐款(你甚至可能得分不少)。 请看我们的 捐款额 详细指南。 我们希望这个图书馆 由社区驱动和创造者主导.
通过创建问题、提交拉动请求、审查现有讨论或参与专题请求,帮助确定发展的优先次序.
许可证
该软件在GNU Affero通用公共许可证版本3(AGPLv3)和商业许可证下获得双许可证.
- 开源使用 : 对于开源项目和非商业用途,该软件可在AGPLv3下提供. 许可证全文见LICENSE文件.
- 商业用途: 商业组织如果打算在AGPL要求之外使用这种软件,必须通过Coreate取得商业许可证.