什么是 sharedb-mysql
sharedb-mysql 是一个基于 Node.js 平台的实时协作编辑库 ShareDB 的插件,在使用该插件时可以将 ShareDB 与 MySQL 数据库集成,以实现 ShareDB 的实时编辑和文档版本控制等功能。
安装
安装 sharedb-mysql 模块的命令如下:
npm install sharedb-mysql --save
使用
在使用 sharedb-mysql 时,需要先将其与 ShareDB 进行集成,示例代码如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----- - ----------------- ----- ------------ - ------------------------- -- -- ----- ------ ----- ---- - ------------------ ----- ------------ ----- ------- --------- ----------- --------- ---- --- -- --- ------------ ----- ------------ - --- --------------------- -- - ------- -- ------------- -- --------------------------展开代码
之后,即可开始使用 ShareDB 提供的编辑接口进行实时协作编辑和版本控制等操作。
数据模型
当使用 sharedb-mysql 时,每个文档都会在数据库中创建一个表,表结构如下:
CREATE TABLE IF NOT EXISTS <collection name> ( id VARCHAR(255) PRIMARY KEY, data JSON, v INT, m VARCHAR(255) );
<collection name>
为文档的名称id
字段为该文档的唯一 IDdata
为该文档的内容,以 JSON 格式存储v
为该文档的版本号,每次编辑时 +1m
为该文档的操作类型,如插入、更新、删除等
API
以下是 sharedb-mysql 提供的 API:
new ShareDBMySQL(options)
构造函数,用于实例化 sharedb-mysql 对象。
options
参数为数据库连接相关的配置项,详见下面的文档
options
options
配置项包含以下字段:
pool
:MySQL 连接池对象
sharedbMySQL.connect(callback)
连接数据库,示例代码如下:
const shareDBMySQL = new ShareDBMySQL({pool}); sharedbMySQL.connect((err) => { if (err) throw err; console.log('connected to db'); });
sharedbMySQL.disconnect(callback)
断开数据库连接,示例代码如下:
sharedbMySQL.disconnect((err) => { if (err) throw err; console.log('disconnected from db'); });
案例
以下是一个简单的应用 sharedb-mysql 的示例,内容为实时编辑一个 Markdown 格式的文章。
创建服务器
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----- - ----------------- ----- ------------ - ------------------------- -- -- ----- ------ ----- ---- - ------------------ ----- ------------ ----- ------- --------- ----------- --------- ---- --- -- --- ------------ ----- ------------ - --- --------------------- -- - ------- -- ------------- -- -------------------------- -- ----- ----- ---- - ---------------- ----- ------- - ------------------- ----- --- - ---------- -------------------------------- - ------------ ----- ------ - ----------------------- -- -- ------- -- --------- --- ----- ------------------- - ------------------------------------------- ----- --------------- - --------------------- ----- --- - --- ------------------------ --------- -------------------- ------------ ---- - --- ------ - --- ------------------------ ----------------------- ---展开代码
创建客户端
-- -------------------- ---- ------- ----- ---------------- - ----- ----- ------ - --- ----------------- - ---------------------- ------------- - ---------- - ---------------------- ---------- -------------- -- ----- ---------- - --- --------------------------- --- --- - -------------------------- ------------- ----------------------- - -- ----- ----- ---- -- --------- --- ----- - -------------------- -- ----- -------- ------------ - ----------------- --- -------- ---------------- - ----- ------ - --- ----------- -------- ---------------------------------- ------------- --------------------- --- -- ---- --------- -------- ---------------- ----- -------- - --------------------- - ----------------- ------------ -- ------- -- ------------------ -- ------------------ -- -- -------- --- --------- - ------ --- ------------------------------ ---------- - ----------- --- -- -- ------- ----- ------------ ------------ ------- - -- ------- --- ----------- ------- ------------------------------------ --- -展开代码
以上代码使用 sharedb-mysql 实现了实时编辑文档的功能,并在其中使用了 MySQL 数据库,可供前端开发者参考和学习。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056be881e8991b448e5a33