mongoose
Version:
Mongoose MongoDB ODM
220 lines (192 loc) • 7.11 kB
TypeScript
declare module 'mongoose' {
import stream = require('stream');
interface MongooseOptions {
/**
* Set to `true` to set `allowDiskUse` to true to all aggregation operations by default.
*
* @default false
*/
allowDiskUse?: boolean;
/**
* Set to `false` to skip applying global plugins to child schemas.
*
* @default true
*/
applyPluginsToChildSchemas?: boolean;
/**
* Set to `true` to apply global plugins to discriminator schemas.
* This typically isn't necessary because plugins are applied to the base schema and
* discriminators copy all middleware, methods, statics, and properties from the base schema.
*
* @default false
*/
applyPluginsToDiscriminators?: boolean;
/**
* autoCreate is `true` by default unless readPreference is secondary or secondaryPreferred,
* which means Mongoose will attempt to create every model's underlying collection before
* creating indexes. If readPreference is secondary or secondaryPreferred, Mongoose will
* default to false for both autoCreate and autoIndex because both createCollection() and
* createIndex() will fail when connected to a secondary.
*/
autoCreate?: boolean;
/**
* Set to `false` to disable automatic index creation for all models associated with this Mongoose instance.
*
* @default true
*/
autoIndex?: boolean;
/**
* enable/disable mongoose's buffering mechanism for all connections and models.
*
* @default true
*/
bufferCommands?: boolean;
/**
* If bufferCommands is on, this option sets the maximum amount of time Mongoose
* buffering will wait before throwing an error.
* If not specified, Mongoose will use 10000 (10 seconds).
*
* @default 10000
*/
bufferTimeoutMS?: number;
/**
* Set to `true` to `clone()` all schemas before compiling into a model.
*
* @default false
*/
cloneSchemas?: boolean;
/**
* Set to `false` to disable the creation of the initial default connection.
*
* @default true
*/
createInitialConnection?: boolean;
/**
* If `true`, prints the operations mongoose sends to MongoDB to the console.
* If a writable stream is passed, it will log to that stream, without colorization.
* If a callback function is passed, it will receive the collection name, the method
* name, then all arguments passed to the method. For example, if you wanted to
* replicate the default logging, you could output from the callback
* `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`.
*
* @default false
*/
debug?:
| boolean
| { color?: boolean; shell?: boolean; }
| stream.Writable
| ((collectionName: string, methodName: string, ...methodArgs: any[]) => void);
/**
* If `true`, adds a `id` virtual to all schemas unless overwritten on a per-schema basis.
* @defaultValue true
*/
id?: boolean;
/**
* If `false`, it will change the `createdAt` field to be [`immutable: false`](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable)
* which means you can update the `createdAt`.
*
* @default true
*/
'timestamps.createdAt.immutable'?: boolean
/** If set, attaches [maxTimeMS](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) to every query */
maxTimeMS?: number;
/**
* Mongoose adds a getter to MongoDB ObjectId's called `_id` that
* returns `this` for convenience with populate. Set this to false to remove the getter.
*
* @default true
*/
objectIdGetter?: boolean;
/**
* Set to `true` to default to overwriting models with the same name when calling
* `mongoose.model()`, as opposed to throwing an `OverwriteModelError`.
*
* @default false
*/
overwriteModels?: boolean;
/**
* If `false`, changes the default `returnOriginal` option to `findOneAndUpdate()`,
* `findByIdAndUpdate`, and `findOneAndReplace()` to false. This is equivalent to
* setting the `new` option to `true` for `findOneAndX()` calls by default. Read our
* `findOneAndUpdate()` [tutorial](https://mongoosejs.com/docs/tutorials/findoneandupdate.html)
* for more information.
*
* @default true
*/
returnOriginal?: boolean;
/**
* Set to true to enable [update validators](
* https://mongoosejs.com/docs/validation.html#update-validators
* ) for all validators by default.
*
* @default false
*/
runValidators?: boolean;
/**
* Sanitizes query filters against [query selector injection attacks](
* https://thecodebarbarian.com/2014/09/04/defending-against-query-selector-injection-attacks.html
* ) by wrapping any nested objects that have a property whose name starts with $ in a $eq.
*/
sanitizeFilter?: boolean;
sanitizeProjection?: boolean;
/**
* Set to false to opt out of Mongoose adding all fields that you `populate()`
* to your `select()`. The schema-level option `selectPopulatedPaths` overwrites this one.
*
* @default true
*/
selectPopulatedPaths?: boolean;
/**
* Mongoose also sets defaults on update() and findOneAndUpdate() when the upsert option is
* set by adding your schema's defaults to a MongoDB $setOnInsert operator. You can disable
* this behavior by setting the setDefaultsOnInsert option to false.
*
* @default true
*/
setDefaultsOnInsert?: boolean;
/**
* Sets the default strict mode for schemas.
* May be `false`, `true`, or `'throw'`.
*
* @default true
*/
strict?: boolean | 'throw';
/**
* Set to `false` to allow populating paths that aren't in the schema.
*
* @default true
*/
strictPopulate?: boolean;
/**
* Sets the default [strictQuery](https://mongoosejs.com/docs/guide.html#strictQuery) mode for schemas.
* May be `false`, `true`, or `'throw'`.
*
* @default false
*/
strictQuery?: boolean | 'throw';
/**
* Overwrites default objects to `toJSON()`, for determining how Mongoose
* documents get serialized by `JSON.stringify()`
*
* @default { transform: true, flattenDecimals: true }
*/
toJSON?: ToObjectOptions;
/**
* Overwrites default objects to `toObject()`
*
* @default { transform: true, flattenDecimals: true }
*/
toObject?: ToObjectOptions;
/**
* Set to true to make Mongoose use Node.js' built-in AsyncLocalStorage (Node >= 16.0.0)
* to set `session` option on all operations within a `connection.transaction(fn)` call
* by default. Defaults to false.
*/
transactionAsyncLocalStorage?: boolean;
/**
* If `true`, convert any aliases in filter, projection, update, and distinct
* to their database property names. Defaults to false.
*/
translateAliases?: boolean;
}
}