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',},//第二数据库别名随意,我这里写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版本,配置多数据源相关推荐
- cool-admin框架后端使用-node版本,使用事务装饰器来创建和事务回滚
这里以cool-admin官方封装到依赖@CoolTransaction来实现 演示为重写 控制器update这个CRUD 创建实体类DzhSgChatAcountEntity,路径:src/modu ...
- cool-admin框架后端使用-node版本,三种方式中的repository方式使用
一些简单的查询可以用find(),但是如果想增加其他条件, 那么就要用到createQueryBuilder 我已经新增一个模块:portal,你可以放在你自己的模块里 有几种方法可以创建Query ...
- 带你使用nvm管理node版本以及环境变量配置
有时候使用nvm管理node会发现无法使用node或npm,主要原因是环境变量没有配置成功,或者没有指向正确的位置 环境变量中要配置 NVM_HOME 这个地址是nvm的安装目录 NVM_SYMLIN ...
- node安装和配置(node-v12.20.2-x64 ) 以及node版本切换介绍
一.node的安装(可以去文末直接安装nvm管理器,就不用配置了) 1 下载 | Node.js,也可以下载以往版本,window是以msi结尾的文件 2 安装,直接一直安装就行,如果有之前 ...
- mac怎么查node版本_node版本管理的正确打开方式(mac)
前言 node官网首页 正如node官网所言,Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chr ...
- win10/win11快速安装node并配置环境变量
系列文章目录 从零搭建vue3 + ts + vant 的后台框架-引言 文章目录 系列文章目录 前言 一.打开node.js的官网? 二.下载并安装node 1.下载node最新版本 2. 安装no ...
- 如何在多Node版本的情况下公用一个npm
2019独角兽企业重金招聘Python工程师标准>>> 1.就是修改npm 的默存贮路径 2.在新的目录中 执行npm install -g 自己安装自己, 3.配置环境变量, ...
- laravel + Vue 前后端分离 之 项目配置 - 开发环境
既然你来到查看这篇文章,那么你应该知道PHP 版本 >=7. 接着看一下目录 |-blog |-- api |-- front 目录外部很简单,,不多说了,赶紧看重点 配置Laravel 作为前 ...
- 深度学习框架caffe及py-faster-rcnn详细配置安装过程
深度学习框架caffe及py-faster-rcnn详细配置安装过程 配置环境: ubuntu14.04 CUDA7.5 1.准备工作 安装vim.python-pip.git sudo apt-ge ...
最新文章
- Android SQLite数据库之事务的学习
- mybatis-plus 多列映射成数组_JavaScript 为什么需要类数组
- python3 字典 dict 创建 添加 修改 复制 取值 删除
- CVPR 2021|可操控的GAN——Hijack-GAN
- 驱动学习 - 加载.卸载驱动
- 微软发布 SQL Server 2019 新版本
- 【数据结构与算法】链式队列的Java实现
- 趋势 | AI技能排行榜:TensorFlow热度飙升,Python最火
- 我想在杭州买一套房一百平米左右的房子大概多少钱?
- 程序员必备技能之 Git 的体系结构与历史
- 网络管理与维护作业10
- Silverlight for Windows Phone 7开发系列(1):环境搭建
- jdk、jre各版本下载
- unity3——Humanoid与generic的区别
- java时间日期相减得到天数_java日期相减得到天数
- 一直播、小咖秀大数据自动化运维实践
- PaddleOCR+OpenCV实现中英文识别
- CTU Open Contest 2019 F. Beer Marathon(贪心)
- Dart Isolate
- java中的消息提示框