跳到主要内容

Release 3.7.0

· 阅读需 3 分钟
Harry Chen

Features

1、支持了自定义的 web 参数装饰器

在 Web 场景下,我们已经有 @Query@Body 等参数装饰器,但是用于依旧有自定义的需求,如果这个时候通过现有的参数装饰器去定义会较为繁琐。

新版本提供了一个快速定义装饰器的能力,从而可以快速获取 ctx 属性。

import { createRequestParamDecorator } from '@midwayjs/core';

// 实现装饰器
export const Token = createRequestParamDecorator(ctx => {
return ctx.headers.token;
});

// 使用装饰器
export class UserController {
async invoke(@Token() token: string) {
console.log(token);
}
}

2、koa 组件新增 serverTimeout 配置

通过配置 serverTimeout 的值,可以定义服务端超时时间。

比如 1s 超时。

export const koa = {
serverTimeout: 1000,
}

3、多数据源时提供一个默认数据源的选项

原有 typeorm 等数据库,如果指定了多个数据源,会默认以最后一个配置的数据源作为默认数据源。

默认数据源在 InjectEntityModel 时可以不指定名字。

新版本可以通过显式的配置默认数据源,使得这个行为更可控。

比如:

// config.default.ts
export const typeorm = {
dataSource: {
abc: {},
bcd: {}
},
defaultDataSourceName: 'bcd',
}

这样在使用时,如果不指定 InjectEntityModel 的第二个参数,则会在 bcd 这个 dataSource 中查询 Entity。

3、新增了验证码组件

通过新增的验证码组件,可以生成在登录中常见的图片,计算表达式等类型的验证码。

效果如下:

Bugfix

修复了一个 import 顺序不一致,导致主框架获取错误的情况。

比如:

import * as bull from '@midwayjs/bull';
import * as koa from '@midwayjs/koa';

@Configuration({
imports: [koa, bull]
})
export class MainConfiguration {}

由于内部初始化是使用 require 的属性,即使 imports 的顺序固定,实际 bull 的 application 还是会变为 mainApp,这个时候去引入中间件,都会加到 bull 上,而不是 koa 上。

其他的更新

  • prometheus 支持用户定义 Histogram
  • faas 调整了 triggerFunction 方法的参数
  • 常态化依赖升级