Skip to main content

@plugin

Typings:

function plugin<TFunc extends Func, TParams = Parameters<TFunc>[1]>(mongoosePlugin: TFunc, options?: TParams): ClassDecorator

Parameters:

NameTypeDescription
mongoosePlugin RequiredTFuncThe Plugin to add, works like a normal schema.plugin(plugin) call
optionsTParamsOptions to add to the plugin, works like the second parameter to schema.plugin(plugin, options)

Also see Common Plugins.

tip

If the Plugin to be added has options defined, it can be automatically inferred and set as the type for options, it can also be manually overwritten with the second generic.

Example‚Äč

import { plugin, getModelForClass, defaultClasses } from '@typegoose/typegoose';
import * as findOrCreate from 'mongoose-findorcreate';

@plugin(findOrCreate)
class User extends FindOrCreate {}

const UserModel = getModelForClass(User);
const result = await UserModel.findOrCreate({ ... });