Vue + Nestjs 全栈开发,项目实战(八):数据库的设计及连接

 

目前项目还在第一期,版本v1.0.0,只包含六张表,后期会考虑加入简历库等功能,在新增表

admin_user  后台用户表 

candidate_info 候选人表

customer_info 客户信息表

post_info 职位信息表

post_candidate 职位候选人表

post_image 客户职位图片表 目前没怎么用,后期可存放介绍职位的图片或者视频

数据库链接,这里使用到mysql和redis

redis主要用到的就是存放c端注册登录的手机号和验证码,token等登录信息

config db.ts

const productConfig = {
  mysql: {
    host: '127.0.0.1',
    port: 3306,
    username: 'root',
    password: '123456',
    database: 'hr',
    connectionLimit: 10, // 连接限制
  },
  redis: {
    port: 6379,
    host: '127.0.0.1',
    db: 0,
    password: '123456',
  }
};
 //  打包时把 localConfig注释掉
const localConfig = {
  mysql: {
    host: '127.0.0.1',
    port: 3306,
    username: 'root',
    password: '',
    database: 'hr',
    connectionLimit: 10, // 连接限制
  },
  redis: {
    port: 6379,
    host: '127.0.0.1',
    db: 0,
    password: '',
  }
};
 
// USERDOMAIN:SC-202004270940 表示我本机
const config = process.env.NODE_ENV === "development" ? localConfig  : productConfig;
export default config;

sequelize.ts

import { Sequelize } from 'sequelize-typescript';
import db from '../../config/db';
 
const sequelize = new Sequelize({
  database: db.mysql.database,
  username: db.mysql.username,
  password: db.mysql.password,
  // 自定义主机; 默认值: localhost
  host: db.mysql.host, // 数据库地址
  // 自定义端口; 默认值: 3306
  port: db.mysql.port,
  dialect: 'mysql',
  pool: {
    max: db.mysql.connectionLimit, // 连接池中最大连接数量
    min: 0, // 连接池中最小连接数量
    acquire: 30000,
    idle: 10000, // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
  },
  timezone: '+08:00', // 东八时区
});
 
// 测试数据库链接
sequelize
  .authenticate()
  .then(() => {
    console.log('数据库连接成功');
  })
  .catch((err: any) => {
    // 数据库连接失败时打印输出
    console.error(err);
    throw err;
  });
 
export default sequelize;

redis.ts

import * as Redis from 'ioredis';
import { Logger } from '../utils/log4js';
import config from '../../config/db';
 
let n: number = 0;
const redisIndex = []; // 用于记录 redis 实例索引
const redisList = []; // 用于存储 redis 实例
 
export class RedisInstance {
  static async initRedis(method: string, db = 0) {
    const isExist = redisIndex.some(x => x === db);
    if (!isExist) {
      Logger.debug(`[Redis ${db}]来自 ${method} 方法调用, Redis 实例化了 ${++n} 次 `);
      redisList[db] = new Redis({ ...config.redis, db });
      console.log('redis连接成功');
      redisIndex.push(db);
    } else {
      Logger.debug(`[Redis ${db}]来自 ${method} 方法调用`);
    }
    return redisList[db];
  }
}
import { RedisInstance } from '../../database/redis'

// 实例化 redis
const redis = await RedisInstance.initRedis('auth.certificate', 0);
await redis.setex(`${RedisKeyConstant.ma_openid_send_vali_prefix}${mobile}`, 2592000, `${code}`);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值