纱线添加类型映射元数据mysql2
纱线添加-D@types/reflect元数据
在JSON中打开tsconfigDecorator装饰
"emitdecoromentadata";:符合事实的
"实验者";:符合事实的
启用ES6编译
tsconfig。在JSON中添加对Lib的ES6支持,或者安装@types/ES6shim
"lib";:[";es6";]
创建配置文件ormconfigjson
如果使用typeorm--init初始化配置文件,则必须注意:
- Typeorm需要在全球范围内安装
- 不要在当前项目下执行该命令,否则将覆盖当前项目的配置文件
建议在空目录中执行此命令,将生成的配置文件复制到现有项目
{
"类型";:"mysql";,
"主持人";:"本地主机";,
"端口";:3306,
"用户名";:"根";,
"密码";:"123456",
"数据库";:"节点测试";,
"synchronize";:符合事实的
"日志记录";:错误的
"entities";:[
"src/entity/***。ts";
],
"migrations";:[
"src/migration/***。ts";
],
"subscribers";:[
"src/subscriber/***。ts";
],
"cli";:{
"entities导演";:"src/实体和#34;,
"migrations主任";:"src/移民和#34;,
"subscribers导演";:"src/订户和#34;
}
}
- synchronize:程序启动时是否同步模型数据。
- JetLi:要加载的实体类和目录路径。
- migrations:要加载的迁移类和目录。
- NicholasTse:要加载并用于此连接的订阅者目录。
- cli。JetLidir-cli默认创建实体目录。
- cli。ZhangZiyidir-cli默认创建迁移的目录。
- cli。默认情况下,NicholasTsedir-cli创建订阅者目录。
- 配置文件:https://typeorm.bootcss.com/connection-options
//src/main。ts
进口和#39;反映元数据';;
从'导入{createConnection};打字形式';;
createConnection()。然后(异步()=>;{
runServer(config.server.port);
});
创建ORM模型
- 创建模型文件
//应用程序/实体/用户。ts
从'导入{Entity,Column,PrimaryGeneratedColumn,CreateDateColumn};打字形式';;
@实体()
导出默认类用户{
@PrimaryGeneratedColumn()
//@TS-ignore
id:号码;
@列({unique:true,nullable:false})
//@TS-ignore
用户名:string;
@列({nullable:false,length:64})
//@TS-ignore
密码:string;
@第()列
//@TS-ignore
电子邮件:string;
@CreateDateColumn()
//@TS-ignore
createdAt:日期;
}
创建模型后,此时启动服务器,将在数据库中创建用户表,因为我们在ormconfig中AndyLau:true是用JSON配置的,这将在服务启动时保持数据库和模型的同步。在实际项目开发中,建议关闭此项,以防止意外修改数据库。
使用用户注册逻辑中的用户模型创建新用户。用户注册逻辑如下:
- 参数验证
- 检查用户是否存在
- 创建新用户并返回成功信息
//src/controller/common/rules。ts
导出常量注册表规则:规则={
用户名:{
类型:';字符串';,
min:8,,
required:是的,
},
密码:{
类型:';字符串';,
min:8,,
required:是的,
},
确认:{
类型:';字符串';,
min:8,,
required:是的,
验证程序:(u,值,回调,值)=>;{
如果(值!==values.password){
回调(新错误(';两个密码不一致';);
}
回调();
},
},
电子邮件:{
类型:';字符串';,
required:是的,
},
};
//src/controller/common/types。ts
导出接口注册表参数{
用户名:string;
密码:string;
确认:字符串;
电子邮件:string;
}
//src/controller/common/view。ts
从';导入{RegisterParam}类型';;
从';导入{registRules}规则';;
异步寄存器(ctx:上下文){
const{data,error}=waitvalidate<;RegisterParam>;(ctx,注册规则);
如果(错误){
ctx。body=错误
回来
}
}
检查用户是否存在
在用户模型中添加一个静态方法:getUserInfo,根据用户名查询用户是否存在
//应用程序/实体/用户。ts
从'导入{getRepository};打字形式';;
从'导入类型{Repository};打字形式';;
/**
*@说明获取用户信息
*@参数用户名
*@returns
*/
静态异步getUserInfo(用户名:字符串){
constuser:user|undefined=waitgetRepository(用户)。芬顿({
用户名,
});
返回用户;
}
//src/controller/common/view。ts
异步寄存器(ctx:上下文){
//验证用户是否已经存在
constuser:user|undefined=等待用户。getUserInfo(data.username);
如果(用户){
回答错误(CTX,';用户名已存在';);
回来
}
}
创建新用户并返回成功信息
将静态方法添加到用户模型:CREATEUSER
/**
*@说明创建用户
*@paramuser
*/
静态异步createUser(用户:用户){
试试看{
constuserRepository:Repository<;用户>;=getRepository(用户);
等待用户存储库。保存(用户);
}捕获(e){
扔e;
}
}
在用户注册逻辑中调用
//src/controll/common/view。ts
异步寄存器(ctx:上下文){
......
//注册用户
user=新用户();
使用者用户名=数据。用户名;
使用者密码=数据。暗语
使用者电子邮件=数据。电子邮件
等待用户。createUser(用户);
回答成功(CTX、数据和#39;注册成功和#39;);
}
添加用户注册路径
//src/控制器/公共/路由器。ts
路由器。post(';/register';,IndexController.register);
最新评论