升级请参考 如何更新 Midway 中描述,请不要单独升级某个组件包。
本次 3.16 版本,重构了 Swagger 组件,新增了一个租户组件。
Tenant
新增组件,提供 TenantManager
跨作用域管理租户信息。
比如:
import { TenantManager } from '@midwayjs/tenant';
import { Middleware, Inject, Singleton } from '@midwayjs/core';
// 请求链路中设置,中间件或者 Controller
@Middleware()
class TenantMiddleware {
@Inject()
tenantManager: tenant.TenantManager;
resolve() {
return async(ctx, next) => {
this.tenantManager.setCurrentTenant({
id: '123',
name: '我的租户'
});
}
}
}
// 服务中
@Singleton()
class TenantService {
@Inject()
tenantManager: tenant.TenantManager;
async getTenantInfo() {
const tenantInfo = await this.tenantManager.getCurrentTenant();
console.log(tenantInfo.name);
// 我的租户
}
}
MQTT
增加一个动态添加 mqtt 的方法。
import { Configuration, Inject } from '@midwayjs/core';
import * as mqtt from '@midwayjs/mqtt';
@Configuration({
// ...
})
class MainConfiguration {
@Inject()
mqttFramework: mqtt.Framework;
async onReady() {
await this.mqttFramework.createSubscriber({
host: 'test.mosquitto.org',
port: 1883,
}, {
topicObject: 'test_midway_dynamic',
}, TestSubscriber, 'test');
}
}
Swagger
代码重构,支持了 oneof 等特殊用法,增加几十个用例确保输出和 openapi 3.0 一致。
比如:
import { ApiProperty } from '@midwayjs/swagger';
class Album {
@ApiProperty()
id: number;
@ApiProperty()
name: string;
}
class Photo {
@ApiProperty({
oneOf: [
{ type: 'string' },
{
type: 'array',
items: {
type: 'string',
},
},
],
})
name: string | string[];
@ApiProperty({
oneOf: [
{ type: Album },
{
type: 'array',
items: {
type: () => Album,
},
},
],
})
album: Album | Album[];
}
koa
提供了 query 的 parse 相关配置。
mwtsc 工具
切换回 tsc 自带的监听,稳定性更好。
更多的变化
- 修复了一个健康检查服务丢失 this 的问题
- 参数装饰器增加了一个当前实例的参数
以及一大批依赖进行了更新,可以参考我们的 ChangeLog。