cool-admin框架后端使用-node版本,配置多数据源

一. 配置多数据库源,多个mysql数据库,这里用的是typeorm

1.修改配置文件:src/config/config.local.ts

在这里插入图片描述

第一个数据库一定要用default,
第二数据库别名随意,我这里写test

import { CoolConfig } from '@cool-midway/core';
import { MidwayConfig } from '@midwayjs/core';

export default {
  orm: {
  	//第一个数据库一定要用default,
    default: {
      type: 'mysql',
      host: '127.0.0.1',
      port: 3309,
      username: 'root',
      password: 'dzh123456',
      database: 'dzh3094',
      // 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
      synchronize: true,
      // 打印日志
      logging: false,
      // 字符集
      charset: 'utf8mb4',
    },
    //第二数据库别名随意,我这里写test
    test: {
      type: 'mysql',
      host: '127.0.0.1',
      port: 3309,
      username: 'root',
      password: 'dzh123456',
      database: 'cool',
      // 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
      synchronize:  true,
      // 打印日志
      logging: false,
      // 字符集
      charset: 'utf8mb4',
    },
  },

  cool: {
    // 是否自动导入数据库
    initDB: true,
  } as CoolConfig,
} as MidwayConfig;

2.添加实体类,我这里放在我自定义的模块member下,你可以放到你随意的模块,
我新增一个名称叫test的测试实体类。
路径:src/modules/member/entity/test.ts

在这里插入图片描述

@EntityModel注解,
第一个参数写第二个数据库的表名(配置文件test下设置 synchronize: true,所以会自动生成数据库表,若为 synchronize: false,则需手动建表)
第二个参数写第二个数据库的别名:test(对应配置文件里第二个数据库的别名)

import { EntityModel } from '@midwayjs/orm';
import { BaseEntity } from '@cool-midway/core';
import { Column } from 'typeorm';

/**
 * 描述
 */
@EntityModel('dzh_member_test',{
	connectionName: 'test'
})
export class DzhMemberTestEntity extends BaseEntity {
    @Column({ comment: '会员账号' })
    username: string;
  
    @Column({ comment: '会员密码',default:888888 })
    password: string;
  
    @Column({ comment: '会员昵称', nullable:true })
    nickname: string;
  
    @Column({ comment: '会员等级', default:1 })
    role_id: number;
  
    @Column({ comment: '备注', type:'text', nullable:true })
    remark: string;
  
    @Column({ comment: '状态 0:禁用 1:正常', default: 1, type: 'tinyint'})
    status: number
}

3.新建控制器,app文件夹是应用端,admin文件夹是后台,这里我写在应用端控制器,方便浏览器打开接口测试,
因为写在admin端需要登录权限才能调式接口。路径:src/modules/member/controller/app/user.ts

在这里插入图片描述

新建一个test方法,添加Get注解

import { Body, Get, Inject, Post, Provide } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { DzhMemberUserEntity } from '../../entity/user';

//引入服务类
import { DzhMemberUserService } from '../../service/app/user';

/**
 * 描述
 */
@Provide()
@CoolController({
  api: ['add', 'delete', 'update', 'info', 'list', 'page'],
  entity: DzhMemberUserEntity,
})
export class DzhMemberAccountController extends BaseController {
  @Inject()
  dzhMemberUserService: DzhMemberUserService;

  //注解接口
  @Get('/test', { summary: '测试' })
  async test() {
    //调用服务类方法
    const testInfo = await this.dzhMemberUserService.test()
    return this.ok(testInfo)
  }

  @Post('/login', { summary: '会员登录' })
  async login(
    @Body('userInfo') userInfo: { username: string; password: string }
  ) {
    const res = await this.dzhMemberUserService.login(userInfo);
    return this.ok(res);
  }
}

4.在app文件夹下新增user服务类,路径:src/modules/member/service/app/user.ts
@ InjectEntityModel 注解,
第一个参数写实体类,第二参数写第二个数据库的别名(对应配置文件里第二个数据库的别名)

在这里插入图片描述

import { Inject, Provide } from '@midwayjs/decorator';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/orm';
import { Repository } from 'typeorm';
import { DzhMemberTestEntity } from '../../entity/test';


/**
 * 描述
 */
@Provide()
export class DzhMemberUserService extends BaseService {

  //第一个参数写实体类,第二参数写附表别名
  @InjectEntityModel(DzhMemberTestEntity, 'test')
  dzhMemberTestEntity:Repository<DzhMemberTestEntity>;

  async test() {
    return this.dzhMemberTestEntity.find()
  }
}

测试效果,已经读取到第二个数据库的数据了

在这里插入图片描述

二. 配置多数据库源,mysql+MongoDB,这里用的是typeorm

修改配置文件:src/config/config.local.ts

在这里插入图片描述

第二个数据库下的type写上mongodb,默认端口是27017,
在这之前我已经用Navicat连接新建了一个cool-test数据库
运行后会连接上MongoDB并且自动建表

import { CoolConfig } from '@cool-midway/core';
import { MidwayConfig } from '@midwayjs/core';

/**
 * 本地开发 npm run dev 读取的配置文件
 */
export default {
  orm: {
    // 第一个数据库一定要用default
    default: {
      type: 'mysql',
      host: '127.0.0.1',
      port: 3309,
      username: 'root',
      password: 'dzh123456',
      database: 'dzh3094',
      // 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
      synchronize: true,
      // 打印日志
      logging: false,
      // 字符集
      charset: 'utf8mb4',
    },
    // 第二个数据库名称随意
    test: {
      type: 'mongodb',
      host: '127.0.0.1',
      port: 27017,
      database: 'cool-test',
      logging: false,
      charset: 'utf8mb4',
      
      synchronize:  true,
    },
  },

  cool: {
    // 是否自动导入数据库
    initDB: true,
  } as CoolConfig,
} as MidwayConfig;

控制器调用
路径:src/modules/member/controller/app/user.ts

import { Get, Inject, Provide } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { DzhMemberUserService } from '../../service/app/user';

/**
 * 描述
 */
@Provide()
@CoolController({
  api: ['add', 'delete', 'update', 'info', 'list', 'page'],
  entity: DzhMemberUserEntity,
})
export class DzhMemberAccountController extends BaseController {

  @Inject()
  dzhMemberUserService: DzhMemberUserService;

  @Get('/test', { summary: '测试' })
  async test() {
    const testInfo = await this.dzhMemberUserService.test()
    return this.ok(testInfo)
  }

}

服务类
路径:src/modules/member/service/app/user.ts

import { Inject, Provide } from '@midwayjs/decorator';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/orm';
import { Repository } from 'typeorm';
import { DzhMemberTestEntity } from '../../entity/test';

/**
 * 描述
 */
@Provide()
export class DzhMemberUserService extends BaseService {

  //第一个参数写实体类,第二参数写附表别名
  @InjectEntityModel(DzhMemberTestEntity, 'test')
  dzhMemberTestEntity:Repository<DzhMemberTestEntity>;

  async test() {
    return this.dzhMemberTestEntity.create({
      username:"我是MongoDB"
    })
  }
}

浏览器或者api测试工具测试接口:http://localhost:8001/app/member/user/test

在这里插入图片描述

已经写入到数据库了

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
cool-admin是一个基于Midway.js和Cool-Core的后台管理系统框架。根据引用\[1\],在cool-admin中,可以通过新建控制器来实现接口的测试和调试。控制器可以放在应用端或后台(admin)端,但为了方便浏览器打开接口测试,建议将控制器放在应用端。具体路径为src/modules/member/controller/app/user.ts。 根据引用\[2\],在cool-admin中,可以使用快捷键"con"来一键搭建控制器的结构。在控制器中,可以定义各种自定义接口。同时,cool-admin会自动创建数据库表格,无需手动创建。具体的数据配置可以在配置文件中进行设置。根据引用\[3\],可以在配置文件中设置数据库的连接信息,包括数据库类型、主机、端口、数据库名称等。在cool-admin中,默认使用的是MySQL数据库,但也可以配置使用MongoDB数据库。 总结起来,cool-admin是一个基于Midway.js和Cool-Core的后台管理系统框架,可以通过新建控制器来实现接口的测试和调试。控制器可以放在应用端或后台端,建议放在应用端以方便浏览器打开接口测试。cool-admin会自动创建数据库表格,无需手动创建。具体的数据配置可以在配置文件中进行设置,包括数据库类型、主机、端口、数据库名称等。默认情况下,cool-admin使用的是MySQL数据库,但也可以配置使用MongoDB数据库。 #### 引用[.reference_title] - *1* *3* [cool-admin框架后端使用-node版本配置数据](https://blog.csdn.net/u014617119/article/details/126801483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [cool-admin框架使用](https://blog.csdn.net/asd577007722/article/details/115541717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值