page.decorator.ts 880 B

123456789101112131415161718192021222324
  1. import { createRequestParamDecorator } from '@midwayjs/core';
  2. import { get, pick, omit } from 'lodash';
  3. import { QueryMapping, QueryReset } from '../frame/QueryUtils';
  4. const pageKeys = ['skip', 'limit'];
  5. /**将query的skip和limit提取到object中返回 */
  6. export const Page = () => {
  7. return createRequestParamDecorator(ctx => {
  8. const query = get(ctx, 'query', {});
  9. const page = pick(query, pageKeys);
  10. return page;
  11. });
  12. };
  13. /**将query中的skip和limit剃除,整理查询参数的值和键的映射 */
  14. export const Query = (mapping?: object) => {
  15. return createRequestParamDecorator(ctx => {
  16. const query = get(ctx, 'query', {});
  17. let filter: object = omit(query, pageKeys);
  18. // 先处理参数的查询方式
  19. filter = QueryReset(filter);
  20. // 再处理mapping的字段映射
  21. filter = QueryMapping(filter, mapping);
  22. return filter;
  23. });
  24. };