这里重点介绍三个重要的明细操作:read
, select
, count
read
- 前端
this.$api.post('/a/detail/detail/read', {
flowTaskId,
key: { detailId, detailItemId },
}).then(item => {
console.log(item);
});
- 后端
const user = this.ctx.state.user.op;
const item = await this.ctx.bean.detail.read({
key,
user,
});
select
- 前端
this.$api.post('/a/detail/detail/select', {
flowTaskId,
atomKey,
detailClass,
options,
}).then(data => {
console.log(data.list, data.index, data.finished);
});
- 后端
const user = this.ctx.state.user.op;
const items = await this.ctx.bean.detail.select({
atomKey,
detailClass,
options: {
where: {
['a.detailName']: { op: 'like', val: 'atomName' }
},
orders: [
[ 'a.updatedAt', 'desc' ],
],
page: { index: 0, size: 10 },
mode: null,
},
user,
});
- 返回值
名称 | 说明 |
---|---|
data.list | 条目列表 |
data.index | 下一页的分页索引 |
data.finished | 数据是否已经获取完毕。如果获取完毕,就不会再获取下一页 |
- 参数
名称 | 允许为空 | 说明 |
---|---|---|
detailClass | 是 | 原子类型 |
options | 否 | 查询参数 |
- 查询参数:options
明细的select
操作实现原理是:根据用户提交的参数组合sql语句,其中会联合一些系统表,从而取得用户所希望的信息
名称 | 允许为空 | 缺省值 | 说明 |
---|---|---|---|
where | 是 | 查询条件 | |
orders | 是 | 排序 | |
page.index | 否 | 分页索引 | |
page.size | 是 | 20 | 分页大小 |
mode | 是 | 联合业务表的模式,可选参数:default/full |
mode
: 可通过模块meta
文件中的tableNameModes
添加更多模式的配置,一般是配置mysql的数据视图
- 联合表清单:
表名称 | 表别名 | 说明 |
---|---|---|
aDetail | a | 明细基础表 |
aDetailClass | b | 明细类型表 |
如:testFlowPurchaseOrderDetail | f | 明细业务表 |
aUser | g | userIdCreated 对应的用户信息 |
aUser | g2 | userIdUpdated 对应的用户信息 |
- where条件
EggBornJS中的where
条件类似于EggJS中的where
条件,并进行了扩展,支持更多条件设置,参见:Model方法
- orders排序
EggBornJS中的orders
排序用法与EggJS中的orders
排序一致,如
orders: [
[ 'a.updatedAt', 'desc' ],
],
- page分页
EggBornJS新增了page
分页特性,通过index
和size
的组合生成sql语句中的limit
和offset
一般而言,前端不需传递page.size
,而是由后端统一填充此值,可以在项目的config
文件中覆盖page.size
的默认值,如下:
src/backend/config/config.default.js
// modules
config.modules = {
'a-base': {
pageSize: 20,
},
};
count
- 前端
this.$api.post('/a/detail/detail/count', {
flowTaskId,
atomKey,
detailClass,
options,
}).then(count => {
console.log(count);
});
- 后端
const user = this.ctx.state.user.op;
const count = await this.ctx.bean.detail.count({
atomKey,
detailClass,
options,
user,
});
-
返回值: count
-
参数: 同
select
评论: