Skip to content

Conversation

@vkarpov15
Copy link
Collaborator

@vkarpov15 vkarpov15 commented Oct 10, 2025

Fix #15681

Summary

Something in 8.19.0 release started causing the following script to OOM crash:

import mongoose from "mongoose"; function getMongooseModel<T>(resName: string): mongoose.Model<T> { if (mongoose.models[resName]) { return mongoose.models[resName]; } const schema = new mongoose.Schema({ example: String, }); return mongoose.model<T>(resName, schema); } type Example = { name: string; }; const Model = getMongooseModel<Example>("Example");

I haven't been able to figure out exactly what, but there are two easy fixes:

  1. Update user code to do const schema = new mongoose.Schema<T>(...)
  2. Allow model<T> to take in Schema<any> as opposed to Schema<T>

(2) seems reasonable to do, although we will also suggest (1). These fixes unfortunately seem to be exclusive - applying (2) makes (1) fail with OOM :(

Examples

@vkarpov15 vkarpov15 added this to the 8.19.2 milestone Oct 10, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a type signature issue in Mongoose's model<T> function that was causing OOM crashes in TypeScript when using generic models with untyped schemas. The change relaxes the type constraints to accept Schema<any> instead of requiring Schema<T>, allowing developers to create generic model functions without needing to explicitly type their schemas.

Key changes:

  • Relaxed type signature for model<T> to accept any schema type
  • Added test case demonstrating the previously problematic usage pattern

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@hasezoey hasezoey added the typescript Types or Types-test related issue / Pull Request label Oct 12, 2025
@vkarpov15
Copy link
Collaborator Author

Closing per #15681 (comment)

@vkarpov15 vkarpov15 closed this Oct 20, 2025
@vkarpov15 vkarpov15 removed this from the 8.19.2 milestone Oct 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

typescript Types or Types-test related issue / Pull Request

3 participants