IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> cool-admin框架后端使用-node版本,配置多数据源 -> 正文阅读

[大数据]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

在这里插入图片描述

已经写入到数据库了

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:42  更:2022-09-13 11:24:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:11:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码