全局应用实例,并默认启用 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();
}