添加组件依赖
@malagu/typeorm
配置数据源链接
单数据源
backend:
malagu:
typeorm:
ormConfig:
- type: mysql
host: localhost
port: 3306
synchronize: true
username: root
password: root
database: test
多数据源
为了区分不同的数据源链接,需要给数据源链接设置名称,有且只有一个可以不设置名称,改链接会有一个默认名称 default
backend:
malagu:
typeorm:
ormConfig:
- type: mysql
host: localhost
port: 3306
synchronize: true
username: root
password: root
database: test
- type: mysql
name: 'datasource2'
host: xxxx
port: 3306
synchronize: true
username: root
password: root
database: test
数据库操作
以下示例使用 rest 风格来实现 API,当然您也可以使用 Rpc 风格来实现,没有什么区别。
import { Controller, Get, Param, Delete, Put, Post, Body } from '@malagu/mvc/lib/node';
import { Transactional, OrmContext } from '@malagu/typeorm/lib/node';
import { User } from './entity';
@Controller('users')
export class UserController {
@Get()
@Transactional({ readOnly: true })
list(): Promise<User[]> {
const repo = OrmContext.getRepository(User);
return repo.find();
}
@Get(':id')
@Transactional({ readOnly: true })
get(@Param('id') id: number): Promise<User | undefined> {
const repo = OrmContext.getRepository(User);
return repo.findOne(id);
}
@Delete(':id')
@Transactional()
async reomve(@Param('id') id: number): Promise<void> {
const repo = OrmContext.getRepository(User);
await repo.delete(id);
}
@Put()
@Transactional()
async modify(@Body() user: User): Promise<void> {
const repo = OrmContext.getRepository(User);
await repo.update(user.id, user);
}
@Post()
@Transactional()
create(@Body() user: User): Promise<User> {
const repo = OrmContext.getRepository(User);
return repo.save(user);
}
}