typeorm+mysql+express搭建简单服务器,进行增删改查

初始设置

  1. 创建user文件夹 mkdir user
  2. 切换到user文件夹并且创建一个新的项目 npm init
  3. 安装需要的包
npm i typescript --save-dev   //ts所需要的
npm i express body-parser @types/express @types/body-parser --save //express以及相关中间件
npm i typeorm mysql reflect-metadata --save //typeorm

项目结构

在这里插入图片描述

tsconfig.json

{
    // 编译运行的配置
  "compilerOptions": {
    "lib": ["es5", "es6"],
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
  }
}

data-source.ts

注意:createConnection已经废弃,需要使用DataSource来建立连接

import {DataSource} from 'typeorm'
export const AppDataSource = new DataSource({
    type: "mysql", // 使用的数据库类型
    host: "localhost", //ip 本地为localhost
    port: 3306, // 数据库使用的端口
    username: "root", //数据库用户名
    password: "123", // 数据库用户密码
    database: "fxtest", //使用的数据库名字
    synchronize: true, // 是否同步,如果为true,新建的实体会更新建表或更新字段
    logging: true, // 是否开启日志 为true 为打印执行的sql
    entities: ["./**/entity/*.js"], // 加载entity目录下的js文件为model
    migrations: [],
    subscribers: [],
})

app.ts

import * as express from "express";
import { Request, Response } from "express";
import * as bodyParser from "body-parser";
import { Users } from "./entity/Users";
import { AppDataSource } from "./data-source";
//建立连接
AppDataSource.initialize()
  .then(async connection => {
    //Repository用来操作具体实体
    const userRepository = connection.getRepository(Users);
    
    // 创建并设置express app
    const app = express();
    app.use(bodyParser.json());

    // 注册路由

    app.get("/users", async function (req: Request, res: Response) {
      let users = await userRepository.find()
      //这里需要res.send将数据发送给客户端,不然postman得不到数据
      res.send(users)
    });

    app.get("/users/:id", async function (req: Request, res: Response) {
      let user = userRepository.findOne({ where: { id: Number(req.params.id) } });
      res.send(user)
    });

    app.post("/users", async function (req: Request, res: Response) {
      const user = userRepository.create(req.body);
      let temp = userRepository.save(user);
      res.send(temp)
    });

    app.delete("/users", async function (req: Request, res: Response) {
    //注意:delete中的参数是在query中进行获取的
      let user = await userRepository.findOne({ where: { id: Number(req.query.id)} });
      let result=await userRepository.remove(user);
      res.send(result)
    });
    // 启动 express server
    app.listen(3000);
  });

Users.ts

来声明实体类

import { Entity, PrimaryGeneratedColumn, Column, UpdateDateColumn } from "typeorm"
@Entity()
export  class Users {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    adAccount: string

    @Column()
    bizName: string

    @Column()
    cName: string

    @Column()
    cnDomain: string

    @Column()
    deptName: string

    @Column()
    email: string

    @Column()
    empCode: string

    @Column()
    leader: string

    @Column()
    shortName: string

    @Column()
    subordinateFlag: boolean

    // @Column({name:'datachange_lasttime',type:'timestamp'})
    @UpdateDateColumn({ name: 'datachange_lasttime', type: 'timestamp' })
    dataChangeLastTime: string

    @Column()
    role: Number

}

开始运行

使用tsc来生成js文件
node app.js,启动服务
采用postman进行请求,实现通信,如下图
在这里插入图片描述

参考&学习

https://typeorm.bootcss.com/example-with-express

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值