From f48127f8a4881afc6dfb9b066b4eb357f1ef6c63 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Wed, 7 Apr 2021 03:02:13 +0200 Subject: [PATCH] :bug: fix lean not working with virtuals --- package-lock.json | Bin 69284 -> 70751 bytes package.json | 1 + src/index.ts | 4 +- src/models/Message.ts | 90 +++++++++++++++++++++--------------------- src/models/index.ts | 27 +++++++------ src/util/Database.ts | 9 +++++ 6 files changed, 72 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e721c0c18ab3a77c6c71ceca11c0a7785cd4f20..902566edbd6800c95315a17f4b57583fe8d5f14e 100644 GIT binary patch delta 693 zcmZ27m*xHnmJP=km2&g*()06+Q+0Dv6Z3S-GK)$|6LX4{tQ3^u4D?L(43%^y3rrW? ze2$TyW%7bs@{>PaFr55=g=g~DTSCkRdM1+#1LVU(&C~o`l0%YH5`*2V0*$qEbAp{x zQh`~4HDD!LnE?%v=ejOa?K0U9JAaC z(~`}zTob)qy~-Rt0w)`=m`%2d;GVpY)kYMnGbe8p7iBbX*(lrB$iSl9 zv&g+P*DNK`#XQTz)W5LU)F3I`&poX$Dl(|lH6z2KBFfO*#XQlq9PDm~XwAv|OzfNQ qvd)}D|8SF>{Pw5Ndliϖ6@N1heA^nUa&^2 { + schema.set("toObject", { + virtuals: true, + versionKey: false, + transform(doc: any, ret: any) { + delete ret._id; + delete ret.__v; + const props = schema.get("removeResponse") || []; + props.forEach((prop: string) => { + delete ret[prop]; + }); + }, + }); +}); export * from "./Ban"; export * from "./Channel"; @@ -15,14 +31,3 @@ export * from "./Message"; export * from "./Status"; export * from "./VoiceState"; export * from "./Event"; - -mongoose.plugin((schema: any) => { - schema.options.toJSON = { - virtuals: true, - versionKey: false, - transform(doc: any, ret: any) { - delete ret._id; - delete ret.__v; - }, - }; -}); diff --git a/src/util/Database.ts b/src/util/Database.ts index 883c8dcd..e17eeccb 100644 --- a/src/util/Database.ts +++ b/src/util/Database.ts @@ -2,6 +2,7 @@ import "./MongoBigInt"; import mongoose, { Collection, Connection } from "mongoose"; import { ChangeStream, ChangeEvent, Long } from "mongodb"; import EventEmitter from "events"; +import { Document } from "mongoose"; const uri = process.env.MONGO_URL || "mongodb://localhost:27017/fosscord?readPreference=secondaryPreferred"; console.log(`[DB] connect: ${uri}`); @@ -10,6 +11,14 @@ const connection = mongoose.createConnection(uri, { autoIndex: true, useNewUrlPa export default connection; +function transform(document: T) { + return document.toObject({ virtuals: true }); +} + +export function toObject(document: T | T[]) { + return Array.isArray(document) ? document.map((x) => transform(x)) : transform(document); +} + export interface MongooseCache { on(event: "delete", listener: (id: string) => void): this; on(event: "change", listener: (data: any) => void): this;