序列

2018-11-30 06:39:39

序列是什么

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

模块a-sequence提供了一组测试代码用于演示如何使用序列

定义序列

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

a-sequence/backend/src/meta.js

module.exports = app => {
  const meta = {};
  if (app.meta.isTest || app.meta.isLocal) {
    // meta
    Object.assign(meta, {
      sequence: {
        providers: {
          test: {
            start: 0,
            expression({ ctx, value }) {
              return ++value;
            },
          },
        },
      },
    });
  }
  return meta;
};
名称 说明
test 序列名称
test.start 起始值
test.expression 序列生成逻辑,支持异步函数

获取序列值

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

a-sequence/backend/src/controller/test.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(`a-sequence`);
// next
let next = await moduleSequence.next('test');


评论: