创建数据字典
CabloyJS中数据字典的原子类型是dict
,既可以在系统运行时动态创建
,也可以直接在业务模块中创建静态原子
下面,我们介绍如何通过静态原子
的方式来创建数据字典
静态原子创建数据字典
模块a-dictbooster
定义了几个常用的数据字典,我们以其中的Countries(国家)
为例:
1. 定义静态原子
1)定义静态原子
数组
src/module-system/a-dictbooster/backend/src/config/static/dicts.js
- 1const countries = require('./dict/countries.js');
- 2...
- 3
- 4module.exports = app => {
- 5 const dicts = [
- 6 countries(app), //
- 7 ...
- 8 ];
- 9 return dicts;
- 10};
2)定义静态原子
:a-dictbooster:countries
src/module-system/a-dictbooster/backend/src/config/static/dict/countries.js
- 1const countries = require('./cities/countries.json');
- 2module.exports = app => {
- 3 const dictItems = countries;
- 4 const dictLocales = {
- 5 'zh-cn': {
- 6 USA: '美国',
- 7 China: '中国',
- 8 },
- 9 };
- 10 const dict = {
- 11 atomName: 'Countries',
- 12 atomStaticKey: 'countries',
- 13 atomRevision: 0,
- 14 description: '',
- 15 dictItems: JSON.stringify(dictItems),
- 16 dictLocales: JSON.stringify(dictLocales),
- 17 resourceRoles: 'root',
- 18 };
- 19 return dict;
- 20};
名称 | 说明 |
---|---|
atomStaticKey | 系统自动添加模块名称前缀,生成a-dictbooster:countries |
dictItems | 所有字典项(后面讲述) |
dictLocales | 国际化语言资源。数据字典 的国际化机制是独立于CabloyJS系统 的国际化机制的。也就是说,这里定义的语言资源仅仅作用于当前数据字典,因此不会产生不可预期的冲突 |
resourceRoles | 资源授权对象,这里是角色root |
角色
root
是整个角色树的根,也就意味着所有用户(包括匿名用户
)均可访问此资源
3)定义字典项
src/module-system/a-dictbooster/backend/src/config/static/dict/cities/countries.json
- 1[
- 2 {
- 3 "code": "1",
- 4 "title": "USA"
- 5 },
- 6 {
- 7 "code": "86",
- 8 "title": "China"
- 9 }
- 10]
名称 | 说明 |
---|---|
code | 字典项的唯一标识 |
title | 字典项的标题。作为最佳实践,title 一般指定英文 ,然后通过dictLocales 添加其他语言资源 |
字典项
只需指定code
和title
两个属性,其他属性和数据可以根据业务需要添加
2. 注册静态原子
前面定义好一组静态原子
数据,接下来就需要在模块的meta
文件中进行注册
src/module-system/a-dictbooster/backend/src/meta.js
- 1module.exports = app => {
- 2 ...
- 3 // static
- 4 const staticDicts = require('./config/static/dicts.js')(app);
- 5 const meta = {
- 6 base: {
- 7 ...
- 8 statics: {
- 9 'a-dict.dict': {
- 10 items: staticDicts,
- 11 },
- 12 },
- 13 },
- 14 ...
- 15 };
- 16 return meta;
- 17};
名称 | 说明 |
---|---|
a-dict.dict | 原子类型的全称。在这里,原子类型dict 是由模块a-dict 提供的 |
items | 静态原子数组 |
评论: