序列是什么

模块a-sequence提供了序列特性,可以为某个具体业务提供唯一序列值,比如原子在新建时分配唯一名称

定义序列

在模块的meta中配置序列参数

src/module/test-party/backend/src/meta.js

sequence: {
  providers: {
    test: {
      start: 0,
      expression({ ctx, value }) {
        return ++value;
      },
    },
  },
},
名称 说明
test 序列名称
test.start 起始值
test.expression 序列生成逻辑,支持异步函数

获取序列值

模块a-sequence通过中间件机制向ctx.meta注入了sequence对象,可以便利的操作序列

src/module/test-party/backend/src/controller/test/feat/sequence.js

current

let current = await this.ctx.meta.sequence.current('test');

next

let next = await this.ctx.meta.sequence.next('test');

reset

await this.ctx.meta.sequence.reset('test');

跨模块访问

可以访问其他模块的序列值

// other module's sequence
const moduleSequence = this.ctx.meta.sequence.module(`test-party`);
// next
let next = await moduleSequence.next('test');