getClass
Typings:
function getClass(
input:
| mongoose.Document
| { typegooseName: () => string }
| { typegooseName: string }
| string
| any
): NewableFunction | undefined
Parameters:
| Name | Type | Description |
|---|---|---|
input Required | any | A Input to get a name from |
getClass is used to get a Class from a variety of inputs, which include:
mongoose.Document; Get the name to look-up fromdoc.constructor.modelName, only applies if notypegooseNamefunction or property is present{ typegooseName: () => string }: Get the name to look-up from thetypegooseNamefunction (currently automatically added by typegoose){ typegooseName: string }: Get the name to look-up from thetypegooseNamegetter / property.string: Directly specify the name to look-up.any: Try to get a Class from any of the above, without having proper types.
caution
This look-up only works if the class has been correctly registered with addModelToTypegoose (automatically done when calling getModelForClass or getDiscriminatorModelForClass, but not for buildSchema).
caution
Will throw a Error when caching is disabled E033.
tip
Any class that got compiled with buildSchema (transparently used by getModelForClass or getDiscriminatorModelForClass) a typegooseName function gets automatically added.
This even makes it possible to get the class from sub-documents / sub-classes.
Example
// Nested-GetClass & Document-GetClass
class Food {
@prop()
public name: string;
}
class Kitten {
@prop()
public currentFood: Food;
}
const KittenModel = getModelForClass(Kitten);
const input = new KittenModel();
// Nested
getClass(input.currentFood) === Food; // should be "true"
// Document
getClass(input) === Kitten; // should be "true"
// by string
getClass('Kitten') == Kitten; // should be "true"