初始设置
- 创建user文件夹
mkdir user
- 切换到user文件夹并且创建一个新的项目
npm init
- 安装需要的包
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进行请求,实现通信,如下图