添加组件依赖

  1. @malagu/typeorm

配置数据源链接

单数据源

  1. backend:
  2. malagu:
  3. typeorm:
  4. ormConfig:
  5. - type: mysql
  6. host: localhost
  7. port: 3306
  8. synchronize: true
  9. username: root
  10. password: root
  11. database: test

多数据源

为了区分不同的数据源链接,需要给数据源链接设置名称,有且只有一个可以不设置名称,改链接会有一个默认名称 default

  1. backend:
  2. malagu:
  3. typeorm:
  4. ormConfig:
  5. - type: mysql
  6. host: localhost
  7. port: 3306
  8. synchronize: true
  9. username: root
  10. password: root
  11. database: test
  12. - type: mysql
  13. name: 'datasource2'
  14. host: xxxx
  15. port: 3306
  16. synchronize: true
  17. username: root
  18. password: root
  19. database: test

数据库操作

以下示例使用 rest 风格来实现 API,当然您也可以使用 Rpc 风格来实现,没有什么区别。

  1. import { Controller, Get, Param, Delete, Put, Post, Body } from '@malagu/mvc/lib/node';
  2. import { Transactional, OrmContext } from '@malagu/typeorm/lib/node';
  3. import { User } from './entity';
  4. @Controller('users')
  5. export class UserController {
  6. @Get()
  7. @Transactional({ readOnly: true })
  8. list(): Promise<User[]> {
  9. const repo = OrmContext.getRepository(User);
  10. return repo.find();
  11. }
  12. @Get(':id')
  13. @Transactional({ readOnly: true })
  14. get(@Param('id') id: number): Promise<User | undefined> {
  15. const repo = OrmContext.getRepository(User);
  16. return repo.findOne(id);
  17. }
  18. @Delete(':id')
  19. @Transactional()
  20. async reomve(@Param('id') id: number): Promise<void> {
  21. const repo = OrmContext.getRepository(User);
  22. await repo.delete(id);
  23. }
  24. @Put()
  25. @Transactional()
  26. async modify(@Body() user: User): Promise<void> {
  27. const repo = OrmContext.getRepository(User);
  28. await repo.update(user.id, user);
  29. }
  30. @Post()
  31. @Transactional()
  32. create(@Body() user: User): Promise<User> {
  33. const repo = OrmContext.getRepository(User);
  34. return repo.save(user);
  35. }
  36. }