原子草稿

原子有两种状态:草稿正常

新建的原子处于草稿状态,当提交之后处于正常状态

状态 说明
草稿 只有创建人可以操作,其他人均看不到
正常 只有分配了相应权限的用户才可以操作相应的指令。创建人始终可以查看自己创建的条目,但是如果没有分配权限,就无法操作修改删除等指令

草稿提交

原子从草稿提交至正常状态,由系统基本API路由统一实现,业务模块只需提供业务API路由进行定制化处理

基本API路由

核心模块a-base统一封装了草稿的逻辑,后端路由配置如下:

a-base/backend/src/routes.js

{ method: 'post', path: 'atom/enable', controller: atom },

业务API路由

业务模块只需提供业务API路由,以便在提交正常状态时做一些特别处理。如模块test-party的路由配置如下:

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

{ method: 'post', path: 'party/enable',
  controller: party, 
  middlewares: 'inner',
  meta: { auth: { enable: false } } 
},

业务逻辑

enable业务逻辑一般为空。当使用了扩展指令原子标记时,一般在enable中切换原子标记值,从而执行下一个扩展指令

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

async enable({ atomClass, key, atom, user }) {
  // enable
  const atomFlag = atom.atomEnabled ? 1 : 0;
  // change flag
  await this.ctx.meta.atom.flag({
    key,
    atom: { atomFlag },
    user,
  });
}
名称 说明
atomClass 原子所属原子类型对象
key 原子关键字: { atomId, itemId }
atom 原子对象
user 当前用户对象

公开访问

默认情况下,在正常状态下,只有被授予了read权限的用户才可以read原子条目。CabloyJS提供了一个简便的特性,使得在正常状态下,用户不授予权限就可以直接公开访问原子条目

比如实现新闻公告功能,设置公开访问,就可以绕开数据权限的判断,从而提升数据访问的性能

开启公开访问只需要一个步骤:

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

base: {
  atoms: {
    partyPublic: {
      info: {
        tableName: 'testPartyPublic',
        public: 1,
      },
    },
  },
},
名称 说明
info.public=1 开启公开访问