跳到主要内容

· 阅读需 2 分钟

全局应用实例,并默认启用 asyncLocalStorage

支持在任意方法内取得当前请求上下文。

增加大量 $ 开头的全局变量快捷方式。

大大简化了开发难度,进一步降低代码耦合度。

import { $body } from 'zenweb';
import { $mysql } from '@zenweb/mysql';
import { User } from './model';

async function someFunc() {
// 例子: 取得当前上下文 POST Body 参数不再需要传递 ctx
const { username } = await $body.get({ username: 'string' });
// 例子: 直接使用当前上下文数据库,也不再需要传递 ctx
return $mysql.query("SELECT * FROM `user` WHERE `username` = ?", [username]);
}

async function someFunc2(username: string) {
// 之前使用多租户模式,需要使用 query 方法指定当前请求的数据库句柄
User.query(ctx.db).find({ username }).get();

// 升级后
// 多租户模式中使用 ORM 模型无需再使用 query 方法指定数据库句柄
return User.find({ username }).get();
}

· 阅读需 1 分钟
  • 更新: @zenweb/result: 3.9.0

支持配置 exposeUnexpected 显示意外错误信息

也可以设置环境变量 EXPOSE_UNEXPECTED==1 开启

· 阅读需 2 分钟

[3.31.3] - 2023-5-30

  • 导出: SetupHelper

  • 更新: @zenweb/log: 3.5.1

    支持自定义日志文件名

[3.31.1] - 2023-5-29

  • 更新: @zenweb/meta: 2.6.2 trackId 头信息获取

在项目内部调用接口时往往需要传递客户端标识给下一层应用,此时只需要在请求头信息中添加:

{
"X-Track-Id": ctx.trackId,
}

[3.31.0] - 2023-5-29

  • meta 模块新增 trackId 支持
    • 更新: @zenweb/meta: 2.6.1 trackId 支持
    • 更新: @zenweb/log: 3.5.0 记录 trackId

trackId 用于追踪客户端请求,给客户端设置一个唯一ID在每次请求时设置在 ctx.trackId 属性上,并且在使用 ctx.log 时同时记录到日志中 可以指定 meta 选项开启 trackId

create({
meta: {
trackId: true,
}
})

[3.30.0] - 2023-5-25

  • 更新: @zenweb/result: 3.8.0 支持返回 Stream Buffer Promise 类型

[3.29.0] - 2023-5-8

  • 更新: @zenweb/log: 3.4.0 @zenweb/meta: 2.5.0 统一 ctx.requestId

[3.28.0] - 2023-5-8

  • 更新: @zenweb/log: 3.3.0 支持 writeLevel 和 x-request-id,Error 对象支持记录更多字段

[3.27.1] - 2023-5-5

  • 更新: @zenweb/helper: 3.12.1 notNull message

· 阅读需 1 分钟

更新: @zenweb/result: 3.7.1 外部 fail() 方法,去除 ctx.result,获取 success 数据请使用 ctx.successData 属性

import { mapping, fail, Context } from 'zenweb';

export class DemoController {
@mapping()
demo(ctx: Context) {
// 之前需要注入 Context 对象才能调用 fail 方法
ctx.fail('some-error');

// 更新后直接使用 fail 方法
fail('some-error');
}
}

· 阅读需 1 分钟

[3.25.1] - 2023-4-11

  • 更新: @zenweb/helper@3.11.1 fix: page 方法返回结果缺少输入选项

[3.25.0] - 2023-4-11

  • 更新: @zenweb/helper@3.11.0 page 方法新增 pagetotal 参数,严格模式开关

[3.24.0] - 2023-4-10

  • 更新: @zenweb/helper@3.10.0 page 方法返回结果包含 PageOption

[3.23.1] - 2023-4-10

[3.23.0] - 2023-4-10

[3.22.0] - 2023-4-10

  • update: @zenweb/result@3.3.2 支持 failCodeHeader, failCodeMessage

[3.21.3] - 2023-4-9

[3.21.2] - 2023-4-9

[3.21.1] - 2023-4-9

[3.21.0] - 2023-4-8

  • 更新: @zenweb/helper: ^3.8.0 增加 TypeCastHelper.page 方法
  • 更新: @zenweb/body: ^3.8.0 增加 BodyHelper.page 方法

[3.20.0] - 2023-4-7

  • 更新: @zenweb/helper: ^3.7.0
  • 更新: @zenweb/inject: ^3.19.0

· 阅读需 1 分钟
  • 更新: typecasts: 3.0.0
    • 更新: @zenweb/body: ^3.7.0
    • 更新: @zenweb/helper: ^3.6.1

本次升级主要适配新的 typecasts@3.0.0

3.0 重写了子对象规则,统一使用 type: 'object' 方式。如下:

export class DemoController {
@mapping({ method: 'POST' })
typecast(body: BodyHelper) {
const data = body.get({
kw: 'trim',
news: {
// 指定类型为对象,对象类型同其他类型规则一样可以使用 ~!?object[]
type: 'object[]',
// 指定对象属性的挑选规则,如不指定则对象返回类型为 unknown
pick: {
id: '!int',
title: '!string',
}
}
});
// 返回类型 { kw: string, news: [ { id: number, title: string } ] }
return data;
}
}

· 阅读需 1 分钟
  • 更新: @zenweb/result: ^3.2.1

    • 支持自定义结果渲染器
    • 支持 return 结果自动设置到 ctx.success 中
  • 更新: @zenweb/controller: ^3.13.0

    • 不再主动调用 ctx.success 方法,使用新的 @zenweb/result 来管理结果
    • 新增 ControllerRegister 管理控制器注册

· 阅读需 1 分钟
export class DemoController {
@mapping({ method: 'POST' })
typecast(body: BodyHelper) {
return body.get({
kw: 'trim',
news: {
// 嵌套对象 news
// 嵌套用法与 get({}) 用法一致,可以无限嵌套
type: {
id: '!int',
title: '!string',
}
}
});
}
}

· 阅读需 1 分钟

[3.15.3] - 2023-3-27

  • 新增: tsconfig-app.json tsconfig-module.json 预设文件
    • 开发项目时候可以直接继承预设文件
tsconfig.json
{
"extends": "zenweb/tsconfig-app",
"compilerOptions": {
"outDir": "./app"
},
"include": ["src/**/*"]
}

[3.15.2] - 2023-3-27

  • 新增: tsconfig-base.json 预设文件

[3.15.1] - 2023-3-23

  • 更新: @zenweb/body@3.6.1 错误的使用了 node16 的包导入规则,导致低于 16 版本的 node 无法使用
  • 更新说明文档

· 阅读需 1 分钟
  • 更新: @zenweb/messagecode: ^3.4.0
    • number 类型支持,如果为 number 则直接获取不进行递归查找
    • 可以格式化不在配置项中的字符串
    • 增加 has 方法用于判断配置项是否存在
  • 更新: @zenweb/result: ^3.1.0
    • 使用 messagecode 统一处理错误代码消息
  • 更新: @zenweb/helper: ^3.4.0
    • 使用新的 result.fail 简化错误输出代码
    • 去除配置项中的 requiredErrorCode 和 validateErrorCode
    • 增加全局配置 page 选项
  • 更新: @zenweb/controller: ^3.10.0
    • discoverPaths 支持使用 "./" 开头的相对路径
    • 增加 debug 信息