diff --git a/docs/reference/application.md b/docs/reference/application.md index cf6b2131d..384e0b883 100644 --- a/docs/reference/application.md +++ b/docs/reference/application.md @@ -19,9 +19,7 @@ class Application { ##### Examples ```ts -app.db.on('xxx', () => { - -}); +app.db.close(); ``` ## app.resourcer @@ -92,13 +90,22 @@ app.i18n.t('Hello'); 等同于 app.resourcer.registerActions() +```ts +app.actions({ + async test(ctx, next) { + ctx.body = 'hello world'; + await next(); + }, +}); +``` + ## app.resource() 待完善 等同于 app.resourcer.define() ## app.parse() -等同于 app.cli.parse() +等同于 app.cli.parseAsync() ## app.load() 待完善 diff --git a/docs/reference/context.md b/docs/reference/context.md index 4dfaae59a..a170d63e0 100644 --- a/docs/reference/context.md +++ b/docs/reference/context.md @@ -26,6 +26,85 @@ async (ctx, next) { ## ctx.action 待完善 +### action.params + +资源标识定位 + +- `associatedName` +- `associatedIndex` +- `resourceName` +- `resourceIndex` + +request body + +- `values` bodyparser 之后的 body + +request query + +- `filter` +- `fields` +- `pageSize` +- `page` +- `sort` +- 其他参数 + +### action.mergeParams(); + +```ts +interface mergeParams { + (params: ActionParams, strategies?: MergeStrategies): void; +} + +type MergeStrategyType = 'merge' | 'deepMerge' | 'overwrite' | 'andMerge' | 'orMerge' | 'intersect' | 'union'; +type MergeStrategyFunc = (x: any, y: any) => any; +type MergeStrategy = MergeStrategyType | MergeStrategyFunc; + +interface MergeStrategies { + [key: string]: MergeStrategy; +} +``` + +合并策略 + +- `merge` 浅合并 +- `deepMerge` 深层合并(默认) +- `andMerge` and 合并,用于 filter 参数 +- `orMerge` or 合并,用于 filter 参数 +- `overwrite` 覆盖 +- `intersect` 交集,用于 array 类型,也支持逗号间隔的字符串数组 +- `union` 并集,去重,用于 array 类型,也支持逗号间隔的字符串数组 + +特定参数的默认合并策略 + +```ts +{ + filter: 'andMerge', + fields: 'intersect', + appends: 'union', + except: 'union', + whitelist: 'intersect', + blacklist: 'union', + sort: 'overwrite', +} +``` + +示例 + +```ts +ctx.action.mergeParams({ + filter: { b: 'b1' }, + fields: 'a1,b1,c1', + key1: 'abcdef', +}, { + // filter 参数采用 orMerge 策略 + filter: 'orMerge', + // fields 参数采用 intersect 策略 + fields: 'intersect', + // key1 自定义函数 + key1: (x, y) => y.split(''), +}); +``` + ## ctx.i18n app.i18n 的 cloneInstance。详情见 [I18next API](https://www.i18next.com/overview/api) diff --git a/docs/reference/filter-operators.md b/docs/reference/filter-operators.md index 8918ec946..9261b3f2a 100644 --- a/docs/reference/filter-operators.md +++ b/docs/reference/filter-operators.md @@ -25,7 +25,7 @@ toc: menu - empty - notEmpty -## select +## enum - eq - ne @@ -34,7 +34,7 @@ toc: menu - empty - notEmpty -## multipleSelect +## array - match - notMatch