免费mysql数据库服务器(手把手搭建koa2后端服务器-配置 MySQL 数据库)

安装typeorm、反射元数据、mysql2

纱线添加类型映射元数据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配置的,这将在服务启动时保持数据库和模型的同步。在实际项目开发中,建议关闭此项,以防止意外修改数据库。

免费mysql数据库

使用ORM模型

使用用户注册逻辑中的用户模型创建新用户。用户注册逻辑如下:

  • 参数验证
  • 检查用户是否存在
  • 创建新用户并返回成功信息
参数验证

//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);

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友