跳到主要内容

Release 3.16.0

· 阅读需 2 分钟
Harry Chen

升级请参考 如何更新 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