【后端教程】FEOP 接口描述

全称 Five-Elements-Operations 五元操作,由这五种基本操作可组合成用户的所有操作。

submitTransactions(ops: IOperation[])

UI 界面上用户的每一个操作,都会由逻辑层对本地的 Store 进行改变,并相应地生成一组 ops (IOperation[])。这一组 ops 发送到服务端,服务端则也会按照 ops 表示的意义来对数据库做相应地操作。
IOperation 结构如下:

interface IOperation {
  cmd: string // 操作类型
  _id: string // 操作对象的 id (目前只有 Brick,后期 workplace, collection 也会用到)
  path: string[] // 操作对象的属性路径
  table?: string // 操作对象所在的表(目前只有 Brick,后期 workplace, collection 也会用到)
  args: { [x: string]: any } // 操作的参数
}

1. set

顾名思义,设置某个 brick 或其子属性的一组值。如果 brick 或子属性不存在,就创建它。
通常用于新建 brick 或覆盖式更新 props 属性值。

例1.1:

{
    cmd: 'set',
  _id: 'aaaaa-aaaa-aaaaaa',
  path: [],
  args: {
    _id: 'aaaaa-aaaa-aaaaaa',
    type: 'text',
    version: 0
  }
}
// 如果数据库里没有 "aaaaa-aaaa-aaaaaa" 这一条 brick,将在数据库中创建这一条数据。
// 如果数据库里已有这一条 brick,则将当前 brick 的数据直接替换为 arg 里的内容。

例1.2

{
    cmd: 'set',
  _id: 'aaaaa-aaaa-aaaaa',
  path: ['props', 'title'],
  args: [['hello', {bold: true}], ['world']]
}
// 将 "aaaaa-aaaa-aaaaaa"的 brick.props.title 属性值设置为 args 的内容。

2. update

对某个 brick 或其子属性上的部分值。
通常用于更新 brick 的创建时间、修改时间、版本、样式等。

例2.1 更新版本

{
    cmd: 'update',
  _id: 'bbbbb-bbbb-bbbbbb',
  path: [],
  args: {
    version: 1
  }
}
// 将 "bbbbb-bbbb-bbbbbb" brick 的版本更新为 1。

例2.2 软删除

{
    cmd: 'update',
  _id: 'bbbbb-bbbb-bbbbbb',
  path: [],
  args: {
    alive: false
  }
}
// 将 "bbbbb-bbbb-bbbbbb" brick 软删除。

3. listRemove

将某一条数据,从数组属性值中移除。
通常用于将某 brick 从其父级 brick 的集合中移除。
也通常用于改变次序时,首先『移除』、然后『插入』的『移除』这一步。

例3.1
注:listRemove 通常会与子 brick 软删除组合。

{
    cmd: 'listRemove',
  _id: 'ccccc-cccc-cccccc',
  path: ['children'],
  args: {
    _id: 'xxxxx-xxxx-xxxxxx'
  }
}
// 将 'xxxxx-xxxx-xxxxxx' 从 'ccccc-cccc-cccccc' 的 children 集合中移除

4. listAfter

将某一条数据,插入到数组属性值中,某个元素的后面。
通常用于拖拽元素后,先『移除』再『插入』的『插入』操作。

例4.1

{
    cmd: 'listAfter',
  _id: 'ccccc-cccc-cccccc',
  path: ['children'],
  args: {
    _id: 'xxxxx-xxxx-xxxxxx',
    after: 'yyyyy-yyyy-yyyyyy'
  }
}
// 将 'xxxxx-xxxx-xxxxxx' 插入到 'ccccc-cccc-cccccc' 的 children 集合中的 'yyyy...' 后面的位置

5. listBefore

将某一条数据,插入到数组属性值中,某个元素的前面。
拖拽行为默认使用 listAfter,而 listBefore 通常用于 listAfter 表示不了的一些情况。

例5.1

{
    cmd: 'listBefore',
  _id: 'ccccc-cccc-cccccc',
  path: ['children'],
  args: {
    _id: 'xxxxx-xxxx-xxxxxx',
    before: 'yyyyy-yyyy-yyyyyy'
  }
}
// 将 'xxxxx-xxxx-xxxxxx' 插入到 'ccccc-cccc-cccccc' 的 children 集合中的 'yyyy...' 前面的位置

服务推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值