一. 配置多数据库源,多个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',},//第二数据库别名随意,我这里写testtest: {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: {// 第一个数据库一定要用defaultdefault: {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

已经写入到数据库了

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

  1. cool-admin框架后端使用-node版本,使用事务装饰器来创建和事务回滚

    这里以cool-admin官方封装到依赖@CoolTransaction来实现 演示为重写 控制器update这个CRUD 创建实体类DzhSgChatAcountEntity,路径:src/modu ...

  2. cool-admin框架后端使用-node版本,三种方式中的repository方式使用

    一些简单的查询可以用find(),但是如果想增加其他条件, 那么就要用到createQueryBuilder 我已经新增一个模块:portal,你可以放在你自己的模块里 有几种方法可以创建Query ...

  3. 带你使用nvm管理node版本以及环境变量配置

    有时候使用nvm管理node会发现无法使用node或npm,主要原因是环境变量没有配置成功,或者没有指向正确的位置 环境变量中要配置 NVM_HOME 这个地址是nvm的安装目录 NVM_SYMLIN ...

  4. node安装和配置(node-v12.20.2-x64 ) 以及node版本切换介绍

    一.node的安装(可以去文末直接安装nvm管理器,就不用配置了) 1    下载 | Node.js,也可以下载以往版本,window是以msi结尾的文件 2   安装,直接一直安装就行,如果有之前 ...

  5. mac怎么查node版本_node版本管理的正确打开方式(mac)

    前言 node官网首页 正如node官网所言,Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chr ...

  6. win10/win11快速安装node并配置环境变量

    系列文章目录 从零搭建vue3 + ts + vant 的后台框架-引言 文章目录 系列文章目录 前言 一.打开node.js的官网? 二.下载并安装node 1.下载node最新版本 2. 安装no ...

  7. 如何在多Node版本的情况下公用一个npm

    2019独角兽企业重金招聘Python工程师标准>>> 1.就是修改npm 的默存贮路径 2.在新的目录中 执行npm  install -g   自己安装自己, 3.配置环境变量, ...

  8. laravel + Vue 前后端分离 之 项目配置 - 开发环境

    既然你来到查看这篇文章,那么你应该知道PHP 版本 >=7. 接着看一下目录 |-blog |-- api |-- front 目录外部很简单,,不多说了,赶紧看重点 配置Laravel 作为前 ...

  9. 深度学习框架caffe及py-faster-rcnn详细配置安装过程

    深度学习框架caffe及py-faster-rcnn详细配置安装过程 配置环境: ubuntu14.04 CUDA7.5 1.准备工作 安装vim.python-pip.git sudo apt-ge ...

最新文章

  1. Android SQLite数据库之事务的学习
  2. mybatis-plus 多列映射成数组_JavaScript 为什么需要类数组
  3. python3 字典 dict 创建 添加 修改 复制 取值 删除
  4. CVPR 2021|可操控的GAN——Hijack-GAN
  5. 驱动学习 - 加载.卸载驱动
  6. 微软发布 SQL Server 2019 新版本
  7. 【数据结构与算法】链式队列的Java实现
  8. 趋势 | AI技能排行榜:TensorFlow热度飙升,Python最火
  9. 我想在杭州买一套房一百平米左右的房子大概多少钱?
  10. 程序员必备技能之 Git 的体系结构与历史
  11. 网络管理与维护作业10
  12. Silverlight for Windows Phone 7开发系列(1):环境搭建
  13. jdk、jre各版本下载
  14. unity3——Humanoid与generic的区别
  15. java时间日期相减得到天数_java日期相减得到天数
  16. 一直播、小咖秀大数据自动化运维实践
  17. PaddleOCR+OpenCV实现中英文识别
  18. CTU Open Contest 2019 F. Beer Marathon(贪心)
  19. Dart Isolate
  20. java中的消息提示框

热门文章

  1. NVIDIA-Jetson nano xaviar 部署
  2. python 实现线程的暂停, 恢复, 退出详解及实例
  3. Wifi关闭状态下获取Wifi列表
  4. OpenCV故障汇总(持续更新)
  5. stopwatch java_StopWatch简单了解
  6. 用html+css+js制作幻灯片显示
  7. (手机版)生产人员计件扫码系统
  8. 联想v800手机看电子书的方法
  9. 沃尔玛与西联汇款达成协议,将在沃尔玛提供西联汇款
  10. Oracle--lpad和rpad