From 1fb6b18a80082e70df4422c74c790e0ee2e150de Mon Sep 17 00:00:00 2001 From: liangtongchuan Date: Sat, 6 May 2023 16:31:37 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(db):=20=E7=BB=99hero=E8=A1=A8?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AA=E8=AF=BB=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/db/Hero.ts | 37 ++++++++++++++++++++++--------------- shared/db/index.ts | 2 ++ 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index 1072bca9b..4f24675a2 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -1,5 +1,5 @@ import BaseModel from './BaseModel'; -import { index, getModelForClass, prop, Ref, mongoose, DocumentType } from '@typegoose/typegoose'; +import { index, getModelForClass, prop, Ref, mongoose, DocumentType, ReturnModelType } from '@typegoose/typegoose'; // import Equip, { } from './Equip'; import { DEFAULT_HERO_LV } from '../consts'; import Skin, { SkinUpdate } from './Skin'; @@ -179,27 +179,27 @@ export default class Hero extends BaseModel { for (let { field, sortBy } of sort) { sortParam[field] = sortBy; } - const heros: HeroType[] = await HeroModel.find({ roleId }).sort(sortParam).select(select).lean({ getters }); + const heros: HeroType[] = await HeroROModel.find({ roleId }).sort(sortParam).select(select).lean({ getters }); return heros; } public static async findAndSortByCe(roleId: string) { - const heroes: HeroType[] = await HeroModel.find({ roleId }).sort({ ce: -1 }).lean(); + const heroes: HeroType[] = await HeroROModel.find({ roleId }).sort({ ce: -1 }).lean(); return heroes } public static async findBySeqIdRange(seqIds: Array, roleId: string, lean = true) { - const hero: HeroType[] = await HeroModel.find({ seqId: { $in: seqIds }, roleId }).lean(lean); + const hero: HeroType[] = await HeroROModel.find({ seqId: { $in: seqIds }, roleId }).lean(lean); return hero; } public static async findByHidRange(hids: Array, roleId: string, select?: string, getters = false) { - const hero: HeroType[] = await HeroModel.find({ hid: { $in: hids }, roleId }).select(select).lean({ getters }); + const hero: HeroType[] = await HeroROModel.find({ hid: { $in: hids }, roleId }).select(select).lean({ getters }); return hero; } public static async checkEquipByQuality(roleId: string, quality: number) { - const result = await HeroModel.exists({ roleId, 'ePlace.quality': { $gte: quality } }); + const result = await HeroROModel.exists({ roleId, 'ePlace.quality': { $gte: quality } }); return result; } @@ -213,16 +213,16 @@ export default class Hero extends BaseModel { } public static async findBySeqIdAndRole(seqId: number, roleId: string, lean = true) { - const hero: HeroType = await HeroModel.findOne({ seqId, roleId }).lean(lean); + const hero: HeroType = await HeroROModel.findOne({ seqId, roleId }).lean(lean); return hero; } public static async findByHidAndRole(hid: number, roleId: string, select?: string, getters = false) { - const hero: HeroType = await HeroModel.findOne({ hid, roleId }).select(select).lean({ getters }); + const hero: HeroType = await HeroROModel.findOne({ hid, roleId }).select(select).lean({ getters }); return hero; } public static async findSubHero(roleId: string, subHid: number) { - const hero: HeroType = await HeroModel.findOne({ roleId, subHid }).lean(); + const hero: HeroType = await HeroROModel.findOne({ roleId, subHid }).lean(); return hero; } @@ -284,7 +284,7 @@ export default class Hero extends BaseModel { } public static async getTopHero(roleId: string, num: number, lean = true) { - const heroes: HeroType[] = await HeroModel.find({ roleId }).limit(num).sort({ ce: -1 }).lean(lean); + const heroes: HeroType[] = await HeroROModel.find({ roleId }).limit(num).sort({ ce: -1 }).lean(lean); return heroes; } @@ -313,17 +313,17 @@ export default class Hero extends BaseModel { } public static async getAllRank(serverId: number, select?: string, limit = 200) { - let result: HeroType[] = await HeroModel.find({ serverId }, { _id: false }).select(select).limit(limit).sort({ ce: -1, updatedAt: 1 }).lean({ getters: true }); + let result: HeroType[] = await HeroROModel.find({ serverId }, { _id: false }).select(select).limit(limit).sort({ ce: -1, updatedAt: 1 }).lean({ getters: true }); return result; } public static async getMyTopHero(roleId: string, select?: string) { - let result: HeroType = await HeroModel.findOne({ roleId }, { _id: false }).select(select).sort({ ce: -1, updatedAt: 1 }).lean({ getters: true }); + let result: HeroType = await HeroROModel.findOne({ roleId }, { _id: false }).select(select).sort({ ce: -1, updatedAt: 1 }).lean({ getters: true }); return result; } public static async getRank(hid: number, serverId: number, select?: string, limit = 200) { - let result: HeroType[] = await HeroModel.find({ serverId, hid }, { _id: false }).select(select).limit(limit).lean({ getters: true }); + let result: HeroType[] = await HeroROModel.find({ serverId, hid }, { _id: false }).select(select).limit(limit).lean({ getters: true }); return result; } @@ -346,7 +346,7 @@ export default class Hero extends BaseModel { sort[sortField] = -1; } } - const result: HeroType[] = await HeroModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true }); + const result: HeroType[] = await HeroROModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true }); return result; } @@ -354,12 +354,19 @@ export default class Hero extends BaseModel { public static async countByCondition(form: SearchHeroParam = {}) { let searchObj = this.getSearchObj(form); - const result = await HeroModel.count(searchObj); + const result = await HeroROModel.count(searchObj); return result; } } export const HeroModel = getModelForClass(Hero); +export let HeroROModel: ReturnModelType; +export function loadHeroROModel(connect: mongoose.Connection) { + HeroROModel = getModelForClass(Hero, { + existingConnection: connect + }); +} + export interface HeroType extends Pick, keyof Hero> { }; export type HeroUpdate = Partial; // 将所有字段变成可选项 diff --git a/shared/db/index.ts b/shared/db/index.ts index 8a2368095..9fd1f801b 100644 --- a/shared/db/index.ts +++ b/shared/db/index.ts @@ -15,6 +15,7 @@ import { loadChannelInfo } from "./ChannelInfo"; import { loadPackageModel } from "./Package"; import { loadUserLog } from "./UserLog"; import { loadRoleROModel } from "./Role"; +import { loadHeroROModel } from "./Hero"; export function loadGmDb(connect: mongoose.Connection) { // console.log('************') @@ -41,4 +42,5 @@ export function loadSubDb(connect: mongoose.Connection) { // dbro export function loadRODb(connect: mongoose.Connection) { loadRoleROModel(connect); + loadHeroROModel(connect); } \ No newline at end of file