2.0 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.0 KiB
		
	
	
	
	
	
	
	
| toc | 
|---|
| menu | 
Context
ctx.db
Definition
interface Context {
  db: Database;
}
Examples
async (ctx, next) {
  const User = ctx.db.getCollection('users');
}
ctx.resourcer
ctx.action 待完善
action.params
资源标识定位
- associatedName
- associatedIndex
- resourceName
- resourceIndex
request body
- valuesbodyparser 之后的 body
request query
- filter
- fields
- pageSize
- page
- sort
- 其他参数
action.mergeParams();
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深层合并(默认)
- andMergeand 合并,用于 filter 参数
- orMergeor 合并,用于 filter 参数
- overwrite覆盖
- intersect交集,用于 array 类型,也支持逗号间隔的字符串数组
- union并集,去重,用于 array 类型,也支持逗号间隔的字符串数组
特定参数的默认合并策略
{
  filter: 'andMerge',
  fields: 'intersect',
  appends: 'union',
  except: 'union',
  whitelist: 'intersect',
  blacklist: 'union',
  sort: 'overwrite',
}
示例
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
Definition
interface Context {
  i18n: I18next.I18n;
}
Examples
async (ctx, next) {
  await ctx.i18n.changeLanguage('zh-CN');
}