@microi.net/cli 4.9.6 → 4.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/assets/build-meta.json +6 -5
- package/package.json +1 -1
- package/scripts/mcp-server.js +83 -83
- package/scripts/microi-cli.js +55 -85
- package/scripts/microi-codex-broker.js +418 -0
- package/scripts/microi-codex-router.js +129 -65
- package/scripts/microi-skills.meta.json +310 -151
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +3566 -0
- package/skills/ai-platform-governance/SKILL.md +21 -166
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -0
- package/skills/microi-client-frontend/SKILL.md +17 -434
- package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -0
- package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +178 -0
- package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +144 -0
- package/skills/microi-db-schema/SKILL.md +3 -3
- package/skills/microi-db-schema/references/schema-overview.md +1 -1
- package/skills/microi-db-schema/references/schema.md +1 -1
- package/skills/microi-db-schema/references/table-catalog.md +1 -1
- package/skills/microi-form-engine/SKILL.md +1 -1
- package/skills/microi-form-layout/SKILL.md +19 -225
- package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -0
- package/skills/microi-frontend-sdk/SKILL.md +17 -151
- package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +171 -0
- package/skills/microi-mobile-app-quality/SKILL.md +22 -288
- package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +209 -0
- package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +117 -0
- package/skills/microi-system-delivery/SKILL.md +16 -380
- package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +186 -0
- package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +210 -0
- package/skills/microi-ui/SKILL.md +19 -169
- package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -0
- package/skills/microi-uniapp-frontend/SKILL.md +26 -335
- package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -0
- package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -0
- package/skills/page-engine/SKILL.md +23 -271
- package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -0
- package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -0
- package/skills/playwright-e2e/SKILL.md +24 -590
- package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -0
- package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -0
- package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -0
- package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +69 -0
- package/skills/scripts/optimize-progressive-disclosure.mjs +204 -0
- package/skills/scripts/refresh-progressive-disclosure.mjs +64 -0
- package/skills/scripts/validate-progressive-disclosure.mjs +52 -0
- package/skills/ui-design/SKILL.md +26 -1461
- package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -0
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +155 -0
- package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -0
- package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -0
- package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -0
- package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -0
- package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -0
- package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -0
- package/skills/v8-crud-api/SKILL.md +20 -245
- package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -0
- package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -0
- package/skills/v8-export-import/SKILL.md +15 -425
- package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -0
- package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -0
- package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -0
- package/skills/v8-file-upload/SKILL.md +16 -354
- package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +227 -0
- package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +149 -0
- package/skills/v8-frontend-events/SKILL.md +19 -205
- package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -0
- package/skills/v8-http-integration/SKILL.md +14 -236
- package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -0
- package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -0
- package/skills/v8-menu-buttons/SKILL.md +15 -511
- package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +221 -0
- package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +224 -0
- package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -0
- package/skills/v8-mq-mqtt/SKILL.md +11 -175
- package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -0
- package/skills/v8-security/SKILL.md +16 -329
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +199 -0
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +158 -0
- package/skills/v8-table-event/SKILL.md +16 -236
- package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -0
- package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -0
- package/skills/v8-workflow/SKILL.md +19 -160
- package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -0
- package/skills/workspace-conventions/SKILL.md +29 -361
- package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +208 -0
- package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +196 -0
- package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# v8-crud-api 详细参考 1
|
|
2
|
+
|
|
3
|
+
> 按需读取;本文件由 SKILL.md 的原章节无损拆分。
|
|
4
|
+
|
|
5
|
+
<!-- microi-progressive:chunk id=v8-crud-api-007 sha256=9b2d8de72a10d57a8c969f8b176ebd9892c5810d66ed977d856f294fe4743e0b -->
|
|
6
|
+
## 查询列表(分页)
|
|
7
|
+
|
|
8
|
+
```javascript
|
|
9
|
+
var result = V8.FormEngine.GetTableData('SysUser', {
|
|
10
|
+
_Where: [
|
|
11
|
+
['Status', '=', 1],
|
|
12
|
+
['AND', 'Name', 'Like', V8.Param.keyword || '']
|
|
13
|
+
],
|
|
14
|
+
_SelectFields: ['Id', 'Account', 'Name', 'Phone', 'CreateTime'],
|
|
15
|
+
_OrderBy: 'CreateTime',
|
|
16
|
+
_OrderByType: 'DESC',
|
|
17
|
+
_PageIndex: V8.Param.pageIndex || 1,
|
|
18
|
+
_PageSize: V8.Param.pageSize || 20
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return { Code: 1, Data: result.Data, DataCount: result.DataCount, Msg: '成功' };
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 请求内异步查询
|
|
25
|
+
|
|
26
|
+
后端接口引擎可在本次请求内使用真实异步查询;前端 V8 不使用这个方法名:
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
var result = await V8.FormEngine.GetTableDataAsync('SysUser', {
|
|
30
|
+
_Where: [['Status', '=', 1]],
|
|
31
|
+
_SelectFields: ['Id', 'Account', 'Name'],
|
|
32
|
+
_PageIndex: 1,
|
|
33
|
+
_PageSize: 20
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
return { Code: 1, Data: result.Data, DataCount: result.DataCount };
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
必须 `await` 结果。需要接口先返回、后续再批量处理时,应改用平台后台任务、Job、MQ 或 outbox,而不是丢弃 Promise。
|
|
40
|
+
|
|
41
|
+
### 多字段排序
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
var result = V8.FormEngine.GetTableData('SysUser', {
|
|
45
|
+
_Where: [['Status', '=', 1]],
|
|
46
|
+
_OrderBys: { 'CreateTime': 'desc', 'Name': 'asc' }
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 匿名查询(无需登录)
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
var result = V8.FormEngine.GetTableDataAnonymous('Article', {
|
|
54
|
+
_Where: [['IsPublished', '=', 1]],
|
|
55
|
+
_PageSize: 10
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
匿名新增的公开入口是
|
|
60
|
+
`POST /api/formengine/AddFormDataAnonymous`,且目标表必须显式允许匿名新增。
|
|
61
|
+
当前后端 `V8.FormEngine` 接口不公开
|
|
62
|
+
`V8.FormEngine.AddFormDataAnonymous`;接口引擎内部仍使用
|
|
63
|
+
`V8.FormEngine.AddFormData(...)` 并遵守可信执行身份。不要仅因为历史文档出现
|
|
64
|
+
该名称就为匿名业务接口关闭服务端校验。
|
|
65
|
+
|
|
66
|
+
### 获取树形数据
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
// 表单属性需开启【树形结构】
|
|
70
|
+
var result = V8.FormEngine.GetTableDataTree('Department', {});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 仅获取数据条数
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
var result = V8.FormEngine.GetTableDataCount('SysUser', {
|
|
77
|
+
_Where: [['Status', '=', 1]]
|
|
78
|
+
});
|
|
79
|
+
// result.DataCount 为总数
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
<!-- /microi-progressive:chunk -->
|
|
83
|
+
<!-- microi-progressive:chunk id=v8-crud-api-008 sha256=f7141662789ec6013eb3a7723d9c76449f3ef705e76c694e0fa6b1a065869f6a -->
|
|
84
|
+
## 更新
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
if (!V8.Param.Id) {
|
|
88
|
+
return { Code: 0, Msg: 'Id 不能为空' };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var result = V8.FormEngine.UptFormData('SysUser', {
|
|
92
|
+
Id: V8.Param.Id, // 必传
|
|
93
|
+
Name: V8.Param.Name,
|
|
94
|
+
Phone: V8.Param.Phone,
|
|
95
|
+
_NotSaveField: ['Account'], // 可选:忽略这些字段不更新
|
|
96
|
+
_NoLineForAdd: true, // 可选:数据不存在时自动插入
|
|
97
|
+
_ForceUpt: true // 可选:强制修改自动编号字段
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
return { Code: result.Code, Msg: result.Code === 1 ? '更新成功' : result.Msg };
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 批量更新
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
var uptList = [];
|
|
107
|
+
for (var i = 0; i < V8.Param.items.length; i++) {
|
|
108
|
+
uptList.push({
|
|
109
|
+
FormEngineKey: 'SysUser',
|
|
110
|
+
Id: V8.Param.items[i].Id,
|
|
111
|
+
Status: V8.Param.items[i].Status
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
V8.FormEngine.UptTableData(uptList);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
<!-- /microi-progressive:chunk -->
|
|
118
|
+
<!-- microi-progressive:chunk id=v8-crud-api-009 sha256=b4c668215e95f9c25b0581251b5ba0a3ac52ac30a5deed994383d22334c3f484 -->
|
|
119
|
+
## 删除
|
|
120
|
+
|
|
121
|
+
```javascript
|
|
122
|
+
// 删除单条
|
|
123
|
+
var result = V8.FormEngine.DelFormData('SysUser', { Id: V8.Param.Id });
|
|
124
|
+
|
|
125
|
+
// 批量删除(传 Ids 数组)
|
|
126
|
+
var result = V8.FormEngine.DelFormData('SysUser', { Ids: V8.Param.Ids });
|
|
127
|
+
|
|
128
|
+
return { Code: result.Code, Msg: result.Code === 1 ? '删除成功' : result.Msg };
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 批量删除(跨表)
|
|
132
|
+
|
|
133
|
+
```javascript
|
|
134
|
+
var delList = [];
|
|
135
|
+
delList.push({ FormEngineKey: 'OrderDetail', Id: V8.Param.detailId });
|
|
136
|
+
delList.push({ FormEngineKey: 'OrderHeader', Id: V8.Param.orderId });
|
|
137
|
+
V8.FormEngine.DelTableData(delList);
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
<!-- /microi-progressive:chunk -->
|
|
141
|
+
<!-- microi-progressive:chunk id=v8-crud-api-010 sha256=62326b11ca42eb72bddd7e9e72974aa6b1e36f3a85c10ac19e677fed197b03ec -->
|
|
142
|
+
## 按条件批量操作
|
|
143
|
+
|
|
144
|
+
```javascript
|
|
145
|
+
// 按条件更新
|
|
146
|
+
V8.FormEngine.UptFormDataByWhere('SysUser', {
|
|
147
|
+
_Where: [['DeptId', '=', V8.Param.deptId]],
|
|
148
|
+
Status: 0,
|
|
149
|
+
_NoLineForAdd: true // 可选:不存在时插入
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
// 按条件删除(不支持 _Where 以外的删除方式)
|
|
153
|
+
V8.FormEngine.DelFormDataByWhere('SysUser', {
|
|
154
|
+
_Where: [['Status', '=', 0], ['AND', 'CreateTime', '<', '2024-01-01']]
|
|
155
|
+
});
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
<!-- /microi-progressive:chunk -->
|
|
159
|
+
<!-- microi-progressive:chunk id=v8-crud-api-011 sha256=26127cc70449e261cd49bf5925419f637dae200e7a1ef01bb2385d3197d2e2a9 -->
|
|
160
|
+
## 事务处理
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
// 接口引擎中 V8.Db 自动开启事务:
|
|
164
|
+
// 返回DosResult/带Code对象:仅Code=1提交,其他值回滚
|
|
165
|
+
// 返回对象但没有Code:回滚
|
|
166
|
+
// 返回字符串/数字/数组/布尔/null且未异常:提交
|
|
167
|
+
// 手动调用 V8.DbTrans.Commit() 或 Rollback() 无效,由平台统一管理
|
|
168
|
+
|
|
169
|
+
// FormEngine 可传入事务对象(第三个参数)
|
|
170
|
+
V8.FormEngine.AddFormData('Table1', { Name: '测试' }, V8.DbTrans);
|
|
171
|
+
V8.FormEngine.UptFormData('Table2', { Id: 'xxx', Status: 1 }, V8.DbTrans);
|
|
172
|
+
|
|
173
|
+
// 调用其他接口引擎也可共享事务
|
|
174
|
+
V8.ApiEngine.Run('other-engine-key', { Id: 'xxx' }, V8.DbTrans);
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
<!-- /microi-progressive:chunk -->
|
|
178
|
+
<!-- microi-progressive:chunk id=v8-crud-api-012 sha256=ea59e9c92b84986701a412f53a907fb2243bc7698422c1361d82280d1e4a3e4f -->
|
|
179
|
+
## 请求内异步与后台处理
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
// 本次请求必须拿到结果时,使用真实Async API并await
|
|
183
|
+
var resp = await V8.Http.PostResponseAsync({
|
|
184
|
+
Url: 'https://other.com/notify',
|
|
185
|
+
PostParam: { Id: V8.Param.id },
|
|
186
|
+
Timeout: 10
|
|
187
|
+
});
|
|
188
|
+
return resp.StatusCode >= 200 && resp.StatusCode < 300
|
|
189
|
+
? { Code: 1 }
|
|
190
|
+
: { Code: 0, Msg: '通知失败' };
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
禁止用 `setTimeout` / `Task.Run` 实现“立即返回、后台继续”:接口返回后 Jint Engine、租户上下文、事务和执行租约会释放。脱离请求的任务使用后台任务、Job、MQ 或 outbox,并按 `EventId` 幂等处理与恢复。
|
|
194
|
+
|
|
195
|
+
<!-- /microi-progressive:chunk -->
|
|
196
|
+
<!-- microi-progressive:chunk id=v8-crud-api-013 sha256=d4d96c1d82d1fba71100919ff7b0d48441610fdef4602097723cffdcdaaeebf4 -->
|
|
197
|
+
## 动态加字段(运行时改表结构)
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
V8.FormEngine.AddField({
|
|
201
|
+
TableName: 'diy_test',
|
|
202
|
+
Name: 'Age',
|
|
203
|
+
Type: 'int', // 仅使用平台允许的varchar(N)/mediumtext/longtext/int/bigint/decimal(18,N)
|
|
204
|
+
Label: '年龄',
|
|
205
|
+
Component: 'NumberText',
|
|
206
|
+
TableWidth: '100',
|
|
207
|
+
Visible: 1
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
> 风险:会执行 DDL(ALTER TABLE)。仅在低代码自定义配置场景使用,业务运行时**不要**频繁调用。
|
|
212
|
+
|
|
213
|
+
日期时间字段统一使用 `varchar(25)` 保存 `yyyy-MM-dd HH:mm:ss`,组件使用 `DateTime`。禁止 `datetime/date/timestamp/float/double/boolean/string/text/nvarchar` 等平台不允许的物理类型。动态表/字段属于控制面能力,只允许 `Level >= 9999` 的可信管理脚本使用。
|
|
214
|
+
|
|
215
|
+
<!-- /microi-progressive:chunk -->
|
|
216
|
+
<!-- microi-progressive:chunk id=v8-crud-api-014 sha256=42b43027eb510916aed85a3a21ea8a1c1c7697581ac8c48863e8ba8d0c793784 -->
|
|
217
|
+
## 旧版 _Where 兼容
|
|
218
|
+
|
|
219
|
+
```javascript
|
|
220
|
+
// 老版本前端 / 老接口可能传旧格式 _Where:[{ Name, Value, Type, AndOr, Group }, ...]
|
|
221
|
+
// 转换成新格式:
|
|
222
|
+
var newWhere = V8.Method.ParseWhere(V8.Param._Where);
|
|
223
|
+
V8.FormEngine.GetTableData('Table', { _Where: newWhere });
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
<!-- /microi-progressive:chunk -->
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# v8-crud-api 详细参考 2
|
|
2
|
+
|
|
3
|
+
> 按需读取;本文件由 SKILL.md 的原章节无损拆分。
|
|
4
|
+
|
|
5
|
+
<!-- microi-progressive:chunk id=v8-crud-api-015 sha256=f68c7713878a84a265a5185940d25db21525e73a7dba6d05ba6f82030b96e60a -->
|
|
6
|
+
## _Where 条件语法速查
|
|
7
|
+
|
|
8
|
+
```javascript
|
|
9
|
+
// 等于
|
|
10
|
+
[['Field', '=', value]]
|
|
11
|
+
|
|
12
|
+
// 模糊查询
|
|
13
|
+
[['Name', 'Like', '张']] // %张%
|
|
14
|
+
[['Name', 'StartLike', '张']] // 张%
|
|
15
|
+
[['Name', 'EndLike', '三']] // %三
|
|
16
|
+
|
|
17
|
+
// AND / OR
|
|
18
|
+
[['A', '=', 1], ['AND', 'B', '>', 10]]
|
|
19
|
+
[['A', '=', 1], ['OR', 'B', '=', 2]]
|
|
20
|
+
|
|
21
|
+
// IN / NotIn
|
|
22
|
+
[['Id', 'In', ['id1', 'id2', 'id3']]]
|
|
23
|
+
[['Status', 'NotIn', [0, -1]]]
|
|
24
|
+
|
|
25
|
+
// NULL
|
|
26
|
+
[['Field', '=', null]] // IS NULL
|
|
27
|
+
[['Field', '<>', null]] // IS NOT NULL
|
|
28
|
+
|
|
29
|
+
// 分组(括号)
|
|
30
|
+
[['Name', 'Like', '张'], ['AND', '(', 'Age', '>', 18], ['OR', 'Status', '=', 1, ')']]
|
|
31
|
+
|
|
32
|
+
// 日期范围
|
|
33
|
+
[['CreateTime', '>=', '2024-01-01'], ['AND', 'CreateTime', '<', '2024-02-01']]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**支持的操作符:** `=`, `==`, `<>`, `!=`, `>`, `>=`, `<`, `<=`, `Like`, `NotLike`, `StartLike`, `EndLike`, `In`, `NotIn`
|
|
37
|
+
|
|
38
|
+
<!-- /microi-progressive:chunk -->
|
|
39
|
+
<!-- microi-progressive:chunk id=v8-crud-api-016 sha256=6fe2c6360151a569c46bdc2234b622f7ae8a2f3f76376fda5d90b2ab10ac4e51 -->
|
|
40
|
+
## 注意事项
|
|
41
|
+
|
|
42
|
+
- `_Where` 是参数化查询,自动防 SQL 注入,**不要拼接 SQL 字符串**
|
|
43
|
+
- `AddFormData` 不需要传 `Id`,后端自动生成 GUID
|
|
44
|
+
- `UptFormData` 必须包含 `Id` 字段
|
|
45
|
+
- 如需触发表单 V8 事件,在参数中加 `_InvokeType: 'Client'`
|
|
46
|
+
- 返回值中 `Code: 1` 表示成功,`Code: 0` 表示失败,`Code: 2` 表示数据不存在
|
|
47
|
+
- 分页参数使用 `_PageIndex` 和 `_PageSize`(带下划线前缀)
|
|
48
|
+
- 列表返回总数字段为 `result.DataCount`(非 Total)
|
|
49
|
+
<!-- /microi-progressive:chunk -->
|