首页 - 神途手游 > Midway2.x 服务端框架搭建 (二)

Midway2.x 服务端框架搭建 (二)

发布于:2024-03-08 作者:admin 阅读:72

上一章节我们已经完成了项目所需依赖的基本框架搭建,本章将开始进入业务。

一、创建Model

我们通过模型和数据库关联,在应用中的模型就是数据库表,在 中,模型是和实体绑定的,每一个实体() 文件,即是 Model,也是实体()。

1、创建,添加实体模型装饰器

在 model 目录下创建 .ts 文件,要注意,这里的实体文件的每一个属性,其实是和数据库表一一对应的,基于现有的数据库表进行定义。

我们使用 来定义一个实体模型类,完成后,会自动创建一张表,表名为 参数,此处为 ''

通过 提供的 @ 装饰器来修饰属性,每一个属性对应一个列

注意,这里的 是 做了封装的特殊装饰器,为了和 更好的结合使用。请不要直接使用 中的

(1)您可以通过在 @装饰器中显式指定列类型来使用数据库支持的任何列类型,具体可查看 文档。

(2)要使列成为主键,您需要使用 @

(3)设置自增的 id 列,需要将 @ 装饰器更改为 @mn 装饰器

import { EntityModel } from '@midwayjs/orm'
import { Column, PrimaryGeneratedColumn, UpdateDateColumn, CreateDateColumn } from 'typeorm'
@EntityModel('t_user')
 export class UserModel{
   
  @PrimaryGeneratedColumn()
  id : number
  @Column()
  name: string
  @Column()
  password: string
  @Column()
  email: string
  @Column()
  phone: number
  @Column()
  identity: number
  @Column()
  nickname: string
  @Column()
  age: number
  @Column()
  avatar: string
  @CreateDateColumn({type:'timestamp'})
  createTime: Date
  @UpdateDateColumn()
  updateTime: Date
 }
 

二、创建,实例化Model,进行数据库操作

在 中,使用 @ 装饰器注入我们配置好的 Model。

在 目录下创建 .ts,实现用户新增、查询功能

//service/userService.ts
import { Provide } from '@midwayjs/decorator';
import { InjectEntityModel } from '@midwayjs/orm';
import { Repository } from 'typeorm';
import { IUserData, IUserService } from '../interface';
import { UserModel } from '../model/userModel';
@Provide('userService')
export class UserService implements IUserService {
  // //注入userModel 
  
  @InjectEntityModel(UserModel)
  userModel:Repository<UserModel>
  
  /**
   * @description save user info(create)
   * @param {IUserData} data userData
   */
  public async saveUser(data: IUserData){
    
    try {
      let user = new UserModel();
      user.name = data.name;
      user.nickname = data.nickname;
      user.password = data.password;
      user.phone = data.phone;
      user.age = data.age || 0;
      user.avatar = data.avatar || '';
      user.email = data.email;
      user.identity =data.identity || 0;
      const result = await this.userModel.save(user)
      return result.id
    } catch (error) {
      console.log(error)
    }
  }
  /**
   * @description query all user info
   */
  public async findAllUserInfo(){
    try {
      const result = await this.userModel.find();
      return result
    } catch (error) {
      
    }
  }
  /**
   * @description query user info by userId
   * @param {Number} id userId
   */
  public async findUserById(id: number){
    try {
      const result = await this.userModel.findOne({
        id: id
      })
      return result
    } catch (error) {
      
    }
  }
  /**
   * @description query user info by user name
   * @param {String} name user name
   */
  public async findUserByName(name: string){
    try {
      const result = await this.userModel.findOne({
        name: name
      })
      return result
    } catch (error) {
      
    }
  }
}

至此,关于数据库操作流程基本完毕,更多数据库操作可查看 () · 语雀, 下章节将进行层编写,定义相关接口,调用进行数据操作。

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。

相关文章