@depup/mongoose 9.1.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +22 -0
- package/README.md +397 -0
- package/SECURITY.md +1 -0
- package/eslint.config.mjs +198 -0
- package/index.js +64 -0
- package/lib/aggregate.js +1189 -0
- package/lib/cast/bigint.js +46 -0
- package/lib/cast/boolean.js +32 -0
- package/lib/cast/date.js +41 -0
- package/lib/cast/decimal128.js +39 -0
- package/lib/cast/double.js +50 -0
- package/lib/cast/int32.js +36 -0
- package/lib/cast/number.js +42 -0
- package/lib/cast/objectid.js +29 -0
- package/lib/cast/string.js +37 -0
- package/lib/cast/uuid.js +35 -0
- package/lib/cast.js +436 -0
- package/lib/collection.js +321 -0
- package/lib/connection.js +1855 -0
- package/lib/connectionState.js +26 -0
- package/lib/constants.js +73 -0
- package/lib/cursor/aggregationCursor.js +466 -0
- package/lib/cursor/changeStream.js +198 -0
- package/lib/cursor/queryCursor.js +622 -0
- package/lib/document.js +5521 -0
- package/lib/driver.js +15 -0
- package/lib/drivers/SPEC.md +4 -0
- package/lib/drivers/node-mongodb-native/bulkWriteResult.js +5 -0
- package/lib/drivers/node-mongodb-native/collection.js +393 -0
- package/lib/drivers/node-mongodb-native/connection.js +506 -0
- package/lib/drivers/node-mongodb-native/index.js +10 -0
- package/lib/error/browserMissingSchema.js +29 -0
- package/lib/error/bulkSaveIncompleteError.js +44 -0
- package/lib/error/bulkWriteError.js +41 -0
- package/lib/error/cast.js +158 -0
- package/lib/error/createCollectionsError.js +26 -0
- package/lib/error/divergentArray.js +40 -0
- package/lib/error/eachAsyncMultiError.js +41 -0
- package/lib/error/index.js +237 -0
- package/lib/error/invalidSchemaOption.js +32 -0
- package/lib/error/messages.js +47 -0
- package/lib/error/missingSchema.js +33 -0
- package/lib/error/mongooseError.js +13 -0
- package/lib/error/notFound.js +47 -0
- package/lib/error/objectExpected.js +31 -0
- package/lib/error/objectParameter.js +31 -0
- package/lib/error/overwriteModel.js +31 -0
- package/lib/error/parallelSave.js +33 -0
- package/lib/error/parallelValidate.js +33 -0
- package/lib/error/serverSelection.js +62 -0
- package/lib/error/setOptionError.js +103 -0
- package/lib/error/strict.js +35 -0
- package/lib/error/strictPopulate.js +31 -0
- package/lib/error/syncIndexes.js +30 -0
- package/lib/error/validation.js +97 -0
- package/lib/error/validator.js +100 -0
- package/lib/error/version.js +38 -0
- package/lib/helpers/aggregate/prepareDiscriminatorPipeline.js +39 -0
- package/lib/helpers/aggregate/stringifyFunctionOperators.js +50 -0
- package/lib/helpers/arrayDepth.js +33 -0
- package/lib/helpers/clone.js +204 -0
- package/lib/helpers/common.js +127 -0
- package/lib/helpers/createJSONSchemaTypeDefinition.js +24 -0
- package/lib/helpers/cursor/eachAsync.js +225 -0
- package/lib/helpers/discriminator/applyEmbeddedDiscriminators.js +36 -0
- package/lib/helpers/discriminator/areDiscriminatorValuesEqual.js +16 -0
- package/lib/helpers/discriminator/checkEmbeddedDiscriminatorKeyProjection.js +12 -0
- package/lib/helpers/discriminator/getConstructor.js +29 -0
- package/lib/helpers/discriminator/getDiscriminatorByValue.js +28 -0
- package/lib/helpers/discriminator/getSchemaDiscriminatorByValue.js +27 -0
- package/lib/helpers/discriminator/mergeDiscriminatorSchema.js +91 -0
- package/lib/helpers/document/applyDefaults.js +132 -0
- package/lib/helpers/document/applyTimestamps.js +106 -0
- package/lib/helpers/document/applyVirtuals.js +147 -0
- package/lib/helpers/document/cleanModifiedSubpaths.js +45 -0
- package/lib/helpers/document/compile.js +238 -0
- package/lib/helpers/document/getDeepestSubdocumentForPath.js +38 -0
- package/lib/helpers/document/getEmbeddedDiscriminatorPath.js +53 -0
- package/lib/helpers/document/handleSpreadDoc.js +35 -0
- package/lib/helpers/each.js +25 -0
- package/lib/helpers/error/combinePathErrors.js +22 -0
- package/lib/helpers/firstKey.js +8 -0
- package/lib/helpers/get.js +65 -0
- package/lib/helpers/getConstructorName.js +16 -0
- package/lib/helpers/getDefaultBulkwriteResult.js +18 -0
- package/lib/helpers/getFunctionName.js +10 -0
- package/lib/helpers/immediate.js +16 -0
- package/lib/helpers/indexes/applySchemaCollation.js +13 -0
- package/lib/helpers/indexes/decorateDiscriminatorIndexOptions.js +14 -0
- package/lib/helpers/indexes/getRelatedIndexes.js +63 -0
- package/lib/helpers/indexes/isDefaultIdIndex.js +18 -0
- package/lib/helpers/indexes/isIndexEqual.js +95 -0
- package/lib/helpers/indexes/isIndexSpecEqual.js +32 -0
- package/lib/helpers/indexes/isTextIndex.js +16 -0
- package/lib/helpers/indexes/isTimeseriesIndex.js +16 -0
- package/lib/helpers/isAsyncFunction.js +9 -0
- package/lib/helpers/isBsonType.js +15 -0
- package/lib/helpers/isMongooseObject.js +22 -0
- package/lib/helpers/isObject.js +16 -0
- package/lib/helpers/isPOJO.js +12 -0
- package/lib/helpers/isPromise.js +6 -0
- package/lib/helpers/isSimpleValidator.js +22 -0
- package/lib/helpers/minimize.js +41 -0
- package/lib/helpers/model/applyDefaultsToPOJO.js +52 -0
- package/lib/helpers/model/applyHooks.js +140 -0
- package/lib/helpers/model/applyMethods.js +70 -0
- package/lib/helpers/model/applyStaticHooks.js +33 -0
- package/lib/helpers/model/applyStatics.js +13 -0
- package/lib/helpers/model/castBulkWrite.js +316 -0
- package/lib/helpers/model/decorateBulkWriteResult.js +8 -0
- package/lib/helpers/model/discriminator.js +265 -0
- package/lib/helpers/model/pushNestedArrayPaths.js +15 -0
- package/lib/helpers/omitUndefined.js +20 -0
- package/lib/helpers/once.js +12 -0
- package/lib/helpers/parallelLimit.js +37 -0
- package/lib/helpers/path/parentPaths.js +18 -0
- package/lib/helpers/path/setDottedPath.js +33 -0
- package/lib/helpers/pluralize.js +95 -0
- package/lib/helpers/populate/assignRawDocsToIdStructure.js +129 -0
- package/lib/helpers/populate/assignVals.js +360 -0
- package/lib/helpers/populate/createPopulateQueryFilter.js +97 -0
- package/lib/helpers/populate/getModelsMapForPopulate.js +776 -0
- package/lib/helpers/populate/getSchemaTypes.js +228 -0
- package/lib/helpers/populate/getVirtual.js +103 -0
- package/lib/helpers/populate/leanPopulateMap.js +7 -0
- package/lib/helpers/populate/lookupLocalFields.js +40 -0
- package/lib/helpers/populate/markArraySubdocsPopulated.js +49 -0
- package/lib/helpers/populate/modelNamesFromRefPath.js +66 -0
- package/lib/helpers/populate/removeDeselectedForeignField.js +31 -0
- package/lib/helpers/populate/setPopulatedVirtualValue.js +33 -0
- package/lib/helpers/populate/skipPopulateValue.js +10 -0
- package/lib/helpers/populate/validateRef.js +19 -0
- package/lib/helpers/printJestWarning.js +21 -0
- package/lib/helpers/processConnectionOptions.js +65 -0
- package/lib/helpers/projection/applyProjection.js +83 -0
- package/lib/helpers/projection/hasIncludedChildren.js +41 -0
- package/lib/helpers/projection/isDefiningProjection.js +18 -0
- package/lib/helpers/projection/isExclusive.js +37 -0
- package/lib/helpers/projection/isInclusive.js +39 -0
- package/lib/helpers/projection/isNestedProjection.js +8 -0
- package/lib/helpers/projection/isPathExcluded.js +40 -0
- package/lib/helpers/projection/isPathSelectedInclusive.js +28 -0
- package/lib/helpers/projection/isSubpath.js +14 -0
- package/lib/helpers/projection/parseProjection.js +33 -0
- package/lib/helpers/query/applyGlobalOption.js +29 -0
- package/lib/helpers/query/cast$expr.js +287 -0
- package/lib/helpers/query/castFilterPath.js +54 -0
- package/lib/helpers/query/castUpdate.js +643 -0
- package/lib/helpers/query/getEmbeddedDiscriminatorPath.js +103 -0
- package/lib/helpers/query/handleImmutable.js +44 -0
- package/lib/helpers/query/handleReadPreferenceAliases.js +23 -0
- package/lib/helpers/query/hasDollarKeys.js +23 -0
- package/lib/helpers/query/isOperator.js +14 -0
- package/lib/helpers/query/sanitizeFilter.js +38 -0
- package/lib/helpers/query/sanitizeProjection.js +14 -0
- package/lib/helpers/query/selectPopulatedFields.js +62 -0
- package/lib/helpers/query/trusted.js +13 -0
- package/lib/helpers/query/validOps.js +3 -0
- package/lib/helpers/schema/addAutoId.js +7 -0
- package/lib/helpers/schema/applyBuiltinPlugins.js +12 -0
- package/lib/helpers/schema/applyPlugins.js +55 -0
- package/lib/helpers/schema/applyReadConcern.js +20 -0
- package/lib/helpers/schema/applyWriteConcern.js +39 -0
- package/lib/helpers/schema/cleanPositionalOperators.js +12 -0
- package/lib/helpers/schema/getIndexes.js +171 -0
- package/lib/helpers/schema/getKeysInSchemaOrder.js +28 -0
- package/lib/helpers/schema/getPath.js +43 -0
- package/lib/helpers/schema/getSubdocumentStrictValue.js +32 -0
- package/lib/helpers/schema/handleIdOption.js +20 -0
- package/lib/helpers/schema/handleTimestampOption.js +24 -0
- package/lib/helpers/schema/idGetter.js +34 -0
- package/lib/helpers/schema/merge.js +36 -0
- package/lib/helpers/schematype/handleImmutable.js +50 -0
- package/lib/helpers/setDefaultsOnInsert.js +158 -0
- package/lib/helpers/specialProperties.js +3 -0
- package/lib/helpers/symbols.js +20 -0
- package/lib/helpers/timers.js +3 -0
- package/lib/helpers/timestamps/setDocumentTimestamps.js +26 -0
- package/lib/helpers/timestamps/setupTimestamps.js +116 -0
- package/lib/helpers/topology/allServersUnknown.js +12 -0
- package/lib/helpers/topology/isAtlas.js +31 -0
- package/lib/helpers/topology/isSSLError.js +16 -0
- package/lib/helpers/update/applyTimestampsToChildren.js +193 -0
- package/lib/helpers/update/applyTimestampsToUpdate.js +131 -0
- package/lib/helpers/update/castArrayFilters.js +113 -0
- package/lib/helpers/update/decorateUpdateWithVersionKey.js +35 -0
- package/lib/helpers/update/modifiedPaths.js +33 -0
- package/lib/helpers/update/moveImmutableProperties.js +53 -0
- package/lib/helpers/update/removeUnusedArrayFilters.js +32 -0
- package/lib/helpers/update/updatedPathsByArrayFilter.js +27 -0
- package/lib/helpers/updateValidators.js +193 -0
- package/lib/index.js +17 -0
- package/lib/internal.js +46 -0
- package/lib/model.js +5010 -0
- package/lib/modifiedPathsSnapshot.js +9 -0
- package/lib/mongoose.js +1411 -0
- package/lib/options/populateOptions.js +36 -0
- package/lib/options/propertyOptions.js +8 -0
- package/lib/options/saveOptions.js +16 -0
- package/lib/options/schemaArrayOptions.js +78 -0
- package/lib/options/schemaBufferOptions.js +38 -0
- package/lib/options/schemaDateOptions.js +71 -0
- package/lib/options/schemaDocumentArrayOptions.js +68 -0
- package/lib/options/schemaMapOptions.js +43 -0
- package/lib/options/schemaNumberOptions.js +101 -0
- package/lib/options/schemaObjectIdOptions.js +64 -0
- package/lib/options/schemaStringOptions.js +138 -0
- package/lib/options/schemaSubdocumentOptions.js +66 -0
- package/lib/options/schemaTypeOptions.js +244 -0
- package/lib/options/schemaUnionOptions.js +32 -0
- package/lib/options/virtualOptions.js +164 -0
- package/lib/options.js +17 -0
- package/lib/plugins/index.js +6 -0
- package/lib/plugins/saveSubdocs.js +76 -0
- package/lib/plugins/sharding.js +84 -0
- package/lib/plugins/trackTransaction.js +84 -0
- package/lib/plugins/validateBeforeSave.js +41 -0
- package/lib/query.js +5673 -0
- package/lib/queryHelpers.js +387 -0
- package/lib/schema/array.js +699 -0
- package/lib/schema/bigint.js +282 -0
- package/lib/schema/boolean.js +332 -0
- package/lib/schema/buffer.js +343 -0
- package/lib/schema/date.js +467 -0
- package/lib/schema/decimal128.js +263 -0
- package/lib/schema/documentArray.js +656 -0
- package/lib/schema/documentArrayElement.js +137 -0
- package/lib/schema/double.js +246 -0
- package/lib/schema/index.js +32 -0
- package/lib/schema/int32.js +289 -0
- package/lib/schema/map.js +201 -0
- package/lib/schema/mixed.js +146 -0
- package/lib/schema/number.js +510 -0
- package/lib/schema/objectId.js +333 -0
- package/lib/schema/operators/bitwise.js +38 -0
- package/lib/schema/operators/exists.js +12 -0
- package/lib/schema/operators/geospatial.js +107 -0
- package/lib/schema/operators/helpers.js +32 -0
- package/lib/schema/operators/text.js +39 -0
- package/lib/schema/operators/type.js +20 -0
- package/lib/schema/string.js +733 -0
- package/lib/schema/subdocument.js +436 -0
- package/lib/schema/symbols.js +5 -0
- package/lib/schema/union.js +113 -0
- package/lib/schema/uuid.js +305 -0
- package/lib/schema.js +3226 -0
- package/lib/schemaType.js +1835 -0
- package/lib/stateMachine.js +232 -0
- package/lib/types/array/index.js +119 -0
- package/lib/types/array/isMongooseArray.js +5 -0
- package/lib/types/array/methods/index.js +1095 -0
- package/lib/types/arraySubdocument.js +207 -0
- package/lib/types/buffer.js +294 -0
- package/lib/types/decimal128.js +13 -0
- package/lib/types/documentArray/index.js +113 -0
- package/lib/types/documentArray/isMongooseDocumentArray.js +5 -0
- package/lib/types/documentArray/methods/index.js +415 -0
- package/lib/types/double.js +13 -0
- package/lib/types/index.js +23 -0
- package/lib/types/map.js +419 -0
- package/lib/types/objectid.js +41 -0
- package/lib/types/subdocument.js +464 -0
- package/lib/types/uuid.js +13 -0
- package/lib/utils.js +1054 -0
- package/lib/validOptions.js +42 -0
- package/lib/virtualType.js +204 -0
- package/package.json +148 -0
- package/types/aggregate.d.ts +180 -0
- package/types/augmentations.d.ts +9 -0
- package/types/callback.d.ts +8 -0
- package/types/collection.d.ts +49 -0
- package/types/connection.d.ts +297 -0
- package/types/cursor.d.ts +67 -0
- package/types/document.d.ts +374 -0
- package/types/error.d.ts +143 -0
- package/types/expressions.d.ts +3053 -0
- package/types/helpers.d.ts +32 -0
- package/types/index.d.ts +1056 -0
- package/types/indexes.d.ts +97 -0
- package/types/inferhydrateddoctype.d.ts +115 -0
- package/types/inferrawdoctype.d.ts +135 -0
- package/types/inferschematype.d.ts +337 -0
- package/types/middlewares.d.ts +59 -0
- package/types/models.d.ts +1306 -0
- package/types/mongooseoptions.d.ts +228 -0
- package/types/pipelinestage.d.ts +333 -0
- package/types/populate.d.ts +53 -0
- package/types/query.d.ts +934 -0
- package/types/schemaoptions.d.ts +282 -0
- package/types/schematypes.d.ts +654 -0
- package/types/session.d.ts +32 -0
- package/types/types.d.ts +109 -0
- package/types/utility.d.ts +175 -0
- package/types/validation.d.ts +39 -0
- package/types/virtuals.d.ts +14 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
declare module 'mongoose' {
|
|
2
|
+
import stream = require('stream');
|
|
3
|
+
|
|
4
|
+
interface MongooseOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Set to `true` to set `allowDiskUse` to true to all aggregation operations by default.
|
|
7
|
+
*
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
allowDiskUse?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Set to `false` to skip applying global plugins to child schemas.
|
|
13
|
+
*
|
|
14
|
+
* @default true
|
|
15
|
+
*/
|
|
16
|
+
applyPluginsToChildSchemas?: boolean;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Set to `true` to apply global plugins to discriminator schemas.
|
|
20
|
+
* This typically isn't necessary because plugins are applied to the base schema and
|
|
21
|
+
* discriminators copy all middleware, methods, statics, and properties from the base schema.
|
|
22
|
+
*
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
applyPluginsToDiscriminators?: boolean;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* autoCreate is `true` by default unless readPreference is secondary or secondaryPreferred,
|
|
29
|
+
* which means Mongoose will attempt to create every model's underlying collection before
|
|
30
|
+
* creating indexes. If readPreference is secondary or secondaryPreferred, Mongoose will
|
|
31
|
+
* default to false for both autoCreate and autoIndex because both createCollection() and
|
|
32
|
+
* createIndex() will fail when connected to a secondary.
|
|
33
|
+
*/
|
|
34
|
+
autoCreate?: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Set to `false` to disable automatic index creation for all models associated with this Mongoose instance.
|
|
38
|
+
*
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
41
|
+
autoIndex?: boolean;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* enable/disable mongoose's buffering mechanism for all connections and models.
|
|
45
|
+
*
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
48
|
+
bufferCommands?: boolean;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* If bufferCommands is on, this option sets the maximum amount of time Mongoose
|
|
52
|
+
* buffering will wait before throwing an error.
|
|
53
|
+
* If not specified, Mongoose will use 10000 (10 seconds).
|
|
54
|
+
*
|
|
55
|
+
* @default 10000
|
|
56
|
+
*/
|
|
57
|
+
bufferTimeoutMS?: number;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Set to `true` to `clone()` all schemas before compiling into a model.
|
|
61
|
+
*
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
64
|
+
cloneSchemas?: boolean;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Set to `false` to disable the creation of the initial default connection.
|
|
68
|
+
*
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
71
|
+
createInitialConnection?: boolean;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* If `true`, prints the operations mongoose sends to MongoDB to the console.
|
|
75
|
+
* If a writable stream is passed, it will log to that stream, without colorization.
|
|
76
|
+
* If a callback function is passed, it will receive the collection name, the method
|
|
77
|
+
* name, then all arguments passed to the method. For example, if you wanted to
|
|
78
|
+
* replicate the default logging, you could output from the callback
|
|
79
|
+
* `Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')})`.
|
|
80
|
+
*
|
|
81
|
+
* @default false
|
|
82
|
+
*/
|
|
83
|
+
debug?:
|
|
84
|
+
| boolean
|
|
85
|
+
| { color?: boolean; shell?: boolean; }
|
|
86
|
+
| stream.Writable
|
|
87
|
+
| ((collectionName: string, methodName: string, ...methodArgs: any[]) => void);
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* If `true`, adds a `id` virtual to all schemas unless overwritten on a per-schema basis.
|
|
91
|
+
* @defaultValue true
|
|
92
|
+
*/
|
|
93
|
+
id?: boolean;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* If `false`, it will change the `createdAt` field to be [`immutable: false`](https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable)
|
|
97
|
+
* which means you can update the `createdAt`.
|
|
98
|
+
*
|
|
99
|
+
* @default true
|
|
100
|
+
*/
|
|
101
|
+
'timestamps.createdAt.immutable'?: boolean
|
|
102
|
+
|
|
103
|
+
/** If set, attaches [maxTimeMS](https://www.mongodb.com/docs/manual/reference/operator/meta/maxTimeMS/) to every query */
|
|
104
|
+
maxTimeMS?: number;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Mongoose adds a getter to MongoDB ObjectId's called `_id` that
|
|
108
|
+
* returns `this` for convenience with populate. Set this to false to remove the getter.
|
|
109
|
+
*
|
|
110
|
+
* @default true
|
|
111
|
+
*/
|
|
112
|
+
objectIdGetter?: boolean;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Set to `true` to default to overwriting models with the same name when calling
|
|
116
|
+
* `mongoose.model()`, as opposed to throwing an `OverwriteModelError`.
|
|
117
|
+
*
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
120
|
+
overwriteModels?: boolean;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* If `false`, changes the default `returnOriginal` option to `findOneAndUpdate()`,
|
|
124
|
+
* `findByIdAndUpdate`, and `findOneAndReplace()` to false. This is equivalent to
|
|
125
|
+
* setting the `new` option to `true` for `findOneAndX()` calls by default. Read our
|
|
126
|
+
* `findOneAndUpdate()` [tutorial](https://mongoosejs.com/docs/tutorials/findoneandupdate.html)
|
|
127
|
+
* for more information.
|
|
128
|
+
*
|
|
129
|
+
* @default true
|
|
130
|
+
*/
|
|
131
|
+
returnOriginal?: boolean;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Set to true to enable [update validators](
|
|
135
|
+
* https://mongoosejs.com/docs/validation.html#update-validators
|
|
136
|
+
* ) for all validators by default.
|
|
137
|
+
*
|
|
138
|
+
* @default false
|
|
139
|
+
*/
|
|
140
|
+
runValidators?: boolean;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Sanitizes query filters against [query selector injection attacks](
|
|
144
|
+
* https://thecodebarbarian.com/2014/09/04/defending-against-query-selector-injection-attacks.html
|
|
145
|
+
* ) by wrapping any nested objects that have a property whose name starts with $ in a $eq.
|
|
146
|
+
*/
|
|
147
|
+
sanitizeFilter?: boolean;
|
|
148
|
+
|
|
149
|
+
sanitizeProjection?: boolean;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Set to false to opt out of Mongoose adding all fields that you `populate()`
|
|
153
|
+
* to your `select()`. The schema-level option `selectPopulatedPaths` overwrites this one.
|
|
154
|
+
*
|
|
155
|
+
* @default true
|
|
156
|
+
*/
|
|
157
|
+
selectPopulatedPaths?: boolean;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Mongoose also sets defaults on update() and findOneAndUpdate() when the upsert option is
|
|
161
|
+
* set by adding your schema's defaults to a MongoDB $setOnInsert operator. You can disable
|
|
162
|
+
* this behavior by setting the setDefaultsOnInsert option to false.
|
|
163
|
+
*
|
|
164
|
+
* @default true
|
|
165
|
+
*/
|
|
166
|
+
setDefaultsOnInsert?: boolean;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Sets the default strict mode for schemas.
|
|
170
|
+
* May be `false`, `true`, or `'throw'`.
|
|
171
|
+
*
|
|
172
|
+
* @default true
|
|
173
|
+
*/
|
|
174
|
+
strict?: boolean | 'throw';
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Set to `false` to allow populating paths that aren't in the schema.
|
|
178
|
+
*
|
|
179
|
+
* @default true
|
|
180
|
+
*/
|
|
181
|
+
strictPopulate?: boolean;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Sets the default [strictQuery](https://mongoosejs.com/docs/guide.html#strictQuery) mode for schemas.
|
|
185
|
+
* May be `false`, `true`, or `'throw'`.
|
|
186
|
+
*
|
|
187
|
+
* @default false
|
|
188
|
+
*/
|
|
189
|
+
strictQuery?: boolean | 'throw';
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Overwrites default objects to `toJSON()`, for determining how Mongoose
|
|
193
|
+
* documents get serialized by `JSON.stringify()`
|
|
194
|
+
*
|
|
195
|
+
* @default { transform: true, flattenDecimals: true }
|
|
196
|
+
*/
|
|
197
|
+
toJSON?: ToObjectOptions;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Overwrites default objects to `toObject()`
|
|
201
|
+
*
|
|
202
|
+
* @default { transform: true, flattenDecimals: true }
|
|
203
|
+
*/
|
|
204
|
+
toObject?: ToObjectOptions;
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Set to true to make Mongoose use Node.js' built-in AsyncLocalStorage (Node >= 16.0.0)
|
|
208
|
+
* to set `session` option on all operations within a `connection.transaction(fn)` call
|
|
209
|
+
* by default. Defaults to false.
|
|
210
|
+
*/
|
|
211
|
+
transactionAsyncLocalStorage?: boolean;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* If `true`, convert any aliases in filter, projection, update, and distinct
|
|
215
|
+
* to their database property names. Defaults to false.
|
|
216
|
+
*/
|
|
217
|
+
translateAliases?: boolean;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* If `true`, allows passing update pipelines (arrays) to update operations by default
|
|
221
|
+
* without explicitly setting `updatePipeline: true` in each query. This is the global
|
|
222
|
+
* default for the `updatePipeline` query option.
|
|
223
|
+
*
|
|
224
|
+
* @default false
|
|
225
|
+
*/
|
|
226
|
+
updatePipeline?: boolean;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
declare module 'mongoose' {
|
|
2
|
+
/**
|
|
3
|
+
* [Stages reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/#aggregation-pipeline-stages)
|
|
4
|
+
*/
|
|
5
|
+
export type PipelineStage =
|
|
6
|
+
| PipelineStage.AddFields
|
|
7
|
+
| PipelineStage.Bucket
|
|
8
|
+
| PipelineStage.BucketAuto
|
|
9
|
+
| PipelineStage.CollStats
|
|
10
|
+
| PipelineStage.Count
|
|
11
|
+
| PipelineStage.Densify
|
|
12
|
+
| PipelineStage.Documents
|
|
13
|
+
| PipelineStage.Facet
|
|
14
|
+
| PipelineStage.Fill
|
|
15
|
+
| PipelineStage.GeoNear
|
|
16
|
+
| PipelineStage.GraphLookup
|
|
17
|
+
| PipelineStage.Group
|
|
18
|
+
| PipelineStage.IndexStats
|
|
19
|
+
| PipelineStage.Limit
|
|
20
|
+
| PipelineStage.ListSessions
|
|
21
|
+
| PipelineStage.Lookup
|
|
22
|
+
| PipelineStage.Match
|
|
23
|
+
| PipelineStage.Merge
|
|
24
|
+
| PipelineStage.Out
|
|
25
|
+
| PipelineStage.PlanCacheStats
|
|
26
|
+
| PipelineStage.Project
|
|
27
|
+
| PipelineStage.Redact
|
|
28
|
+
| PipelineStage.ReplaceRoot
|
|
29
|
+
| PipelineStage.ReplaceWith
|
|
30
|
+
| PipelineStage.Sample
|
|
31
|
+
| PipelineStage.Search
|
|
32
|
+
| PipelineStage.SearchMeta
|
|
33
|
+
| PipelineStage.Set
|
|
34
|
+
| PipelineStage.SetWindowFields
|
|
35
|
+
| PipelineStage.Skip
|
|
36
|
+
| PipelineStage.Sort
|
|
37
|
+
| PipelineStage.SortByCount
|
|
38
|
+
| PipelineStage.UnionWith
|
|
39
|
+
| PipelineStage.Unset
|
|
40
|
+
| PipelineStage.Unwind
|
|
41
|
+
| PipelineStage.VectorSearch;
|
|
42
|
+
|
|
43
|
+
export namespace PipelineStage {
|
|
44
|
+
export interface AddFields {
|
|
45
|
+
/** [`$addFields` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/) */
|
|
46
|
+
$addFields: Record<string, AnyExpression>
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface Bucket {
|
|
50
|
+
/** [`$bucket` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/) */
|
|
51
|
+
$bucket: {
|
|
52
|
+
groupBy: Expression;
|
|
53
|
+
boundaries: any[];
|
|
54
|
+
default?: any
|
|
55
|
+
output?: Record<string, AccumulatorOperator>
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface BucketAuto {
|
|
60
|
+
/** [`$bucketAuto` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/) */
|
|
61
|
+
$bucketAuto: {
|
|
62
|
+
groupBy: Expression | Record<string, Expression>;
|
|
63
|
+
buckets: number;
|
|
64
|
+
output?: Record<string, AccumulatorOperator>;
|
|
65
|
+
granularity?: 'R5' | 'R10' | 'R20' | 'R40' | 'R80' | '1-2-5' | 'E6' | 'E12' | 'E24' | 'E48' | 'E96' | 'E192' | 'POWERSOF2';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface CollStats {
|
|
70
|
+
/** [`$collStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/) */
|
|
71
|
+
$collStats: {
|
|
72
|
+
latencyStats?: { histograms?: boolean };
|
|
73
|
+
storageStats?: { scale?: number };
|
|
74
|
+
count?: Record<string | number | symbol, never>;
|
|
75
|
+
queryExecStats?: Record<string | number | symbol, never>;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface Count {
|
|
80
|
+
/** [`$count` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/) */
|
|
81
|
+
$count: string;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface Densify{
|
|
85
|
+
/** [`$densify` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/) */
|
|
86
|
+
$densify: {
|
|
87
|
+
field: string,
|
|
88
|
+
partitionByFields?: string[],
|
|
89
|
+
range: {
|
|
90
|
+
step: number,
|
|
91
|
+
unit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year',
|
|
92
|
+
bounds: number[] | globalThis.Date[] | 'full' | 'partition'
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface Documents {
|
|
98
|
+
/** [`$documents` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/) */
|
|
99
|
+
$documents: Record<string, Expression>[]
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface Fill {
|
|
103
|
+
/** [`$fill` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/) */
|
|
104
|
+
$fill: {
|
|
105
|
+
partitionBy?: Expression,
|
|
106
|
+
partitionByFields?: string[],
|
|
107
|
+
sortBy?: Record<string, 1 | -1>,
|
|
108
|
+
output: Record<string, { value: Expression } | { method: 'linear' | 'locf' }>
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface Facet {
|
|
113
|
+
/** [`$facet` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/) */
|
|
114
|
+
$facet: Record<string, FacetPipelineStage[]>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export type FacetPipelineStage = Exclude<PipelineStage, PipelineStage.CollStats | PipelineStage.Facet | PipelineStage.GeoNear | PipelineStage.IndexStats | PipelineStage.Out | PipelineStage.Merge | PipelineStage.PlanCacheStats>;
|
|
118
|
+
|
|
119
|
+
export interface GeoNear {
|
|
120
|
+
/** [`$geoNear` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/) */
|
|
121
|
+
$geoNear: {
|
|
122
|
+
near: { type: 'Point'; coordinates: [number, number] } | [number, number];
|
|
123
|
+
distanceField: string;
|
|
124
|
+
distanceMultiplier?: number;
|
|
125
|
+
includeLocs?: string;
|
|
126
|
+
key?: string;
|
|
127
|
+
maxDistance?: number;
|
|
128
|
+
minDistance?: number;
|
|
129
|
+
query?: AnyObject;
|
|
130
|
+
spherical?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Deprecated. Use only with MondoDB below 4.2 (removed in 4.2)
|
|
133
|
+
* @deprecated
|
|
134
|
+
*/
|
|
135
|
+
num?: number;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface GraphLookup {
|
|
140
|
+
/** [`$graphLookup` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/) */
|
|
141
|
+
$graphLookup: {
|
|
142
|
+
from: string;
|
|
143
|
+
startWith: any
|
|
144
|
+
connectFromField: string;
|
|
145
|
+
connectToField: string;
|
|
146
|
+
as: string;
|
|
147
|
+
maxDepth?: number;
|
|
148
|
+
depthField?: string;
|
|
149
|
+
restrictSearchWithMatch?: AnyObject;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export interface Group {
|
|
154
|
+
/** [`$group` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/group) */
|
|
155
|
+
$group: { _id: any } | { [key: string]: AccumulatorOperator }
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export interface IndexStats {
|
|
159
|
+
/** [`$indexStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/) */
|
|
160
|
+
$indexStats: Record<string | number | symbol, never>;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface Limit {
|
|
164
|
+
/** [`$limit` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/) */
|
|
165
|
+
$limit: number
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface ListSessions {
|
|
169
|
+
/** [`$listSessions` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/) */
|
|
170
|
+
$listSessions: { users?: { user: string; db: string }[] } | { allUsers?: true }
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export interface Lookup {
|
|
174
|
+
/** [`$lookup` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) */
|
|
175
|
+
$lookup: {
|
|
176
|
+
from: string
|
|
177
|
+
as: string
|
|
178
|
+
localField?: string
|
|
179
|
+
foreignField?: string
|
|
180
|
+
let?: Record<string, any>
|
|
181
|
+
pipeline?: Exclude<PipelineStage, PipelineStage.Merge | PipelineStage.Out>[]
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export interface Match {
|
|
186
|
+
/** [`$match` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/) */
|
|
187
|
+
$match: QueryFilter<any>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export interface Merge {
|
|
191
|
+
/** [`$merge` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/) */
|
|
192
|
+
$merge: {
|
|
193
|
+
into: string | { db: string; coll: string }
|
|
194
|
+
on?: string | string[]
|
|
195
|
+
let?: Record<string, Expression>
|
|
196
|
+
whenMatched?: 'replace' | 'keepExisting' | 'merge' | 'fail' | Extract<PipelineStage, PipelineStage.AddFields | PipelineStage.Set | PipelineStage.Project | PipelineStage.Unset | PipelineStage.ReplaceRoot | PipelineStage.ReplaceWith>[]
|
|
197
|
+
whenNotMatched?: 'insert' | 'discard' | 'fail'
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export interface Out {
|
|
202
|
+
/** [`$out` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/) */
|
|
203
|
+
$out: string | { db: string; coll: string }
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export interface PlanCacheStats {
|
|
207
|
+
/** [`$planCacheStats` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/) */
|
|
208
|
+
$planCacheStats: Record<string | number | symbol, never>
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface Project {
|
|
212
|
+
/** [`$project` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/) */
|
|
213
|
+
$project: { [field: string]: AnyExpression | Expression | Project['$project'] }
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export interface Redact {
|
|
217
|
+
/** [`$redact` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/) */
|
|
218
|
+
$redact: Expression;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export interface ReplaceRoot {
|
|
222
|
+
/** [`$replaceRoot` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/) */
|
|
223
|
+
$replaceRoot: { newRoot: AnyExpression }
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export interface ReplaceWith {
|
|
227
|
+
/** [`$replaceWith` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/) */
|
|
228
|
+
$replaceWith: ObjectExpressionOperator | { [field: string]: Expression } | `$${string}`;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export interface Sample {
|
|
232
|
+
/** [`$sample` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/) */
|
|
233
|
+
$sample: { size: number }
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface Search {
|
|
237
|
+
/** [`$search` reference](https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/) */
|
|
238
|
+
$search: {
|
|
239
|
+
index?: string;
|
|
240
|
+
highlight?: {
|
|
241
|
+
/** [`highlightPath` reference](https://docs.atlas.mongodb.com/atlas-search/path-construction/#multiple-field-search) */
|
|
242
|
+
path: string | string[] | { value: string, multi: string };
|
|
243
|
+
maxCharsToExamine?: number;
|
|
244
|
+
maxNumPassages?: number;
|
|
245
|
+
};
|
|
246
|
+
[operator: string]: any;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export interface SearchMeta {
|
|
251
|
+
/** [`$searchMeta` reference](https://www.mongodb.com/docs/atlas/atlas-search/query-syntax/#mongodb-pipeline-pipe.-searchMeta) */
|
|
252
|
+
$searchMeta: {
|
|
253
|
+
index?: string;
|
|
254
|
+
highlight?: {
|
|
255
|
+
/** [`highlightPath` reference](https://docs.atlas.mongodb.com/atlas-search/path-construction/#multiple-field-search) */
|
|
256
|
+
path: string | string[] | { value: string, multi: string };
|
|
257
|
+
maxCharsToExamine?: number;
|
|
258
|
+
maxNumPassages?: number;
|
|
259
|
+
};
|
|
260
|
+
[operator: string]: any;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface Set {
|
|
265
|
+
/** [`$set` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/) */
|
|
266
|
+
$set: Record<string, AnyExpression | any>
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export interface SetWindowFields {
|
|
270
|
+
/** [`$setWindowFields` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/) */
|
|
271
|
+
$setWindowFields: {
|
|
272
|
+
partitionBy?: any
|
|
273
|
+
sortBy?: Record<string, 1 | -1>
|
|
274
|
+
output: Record<
|
|
275
|
+
string,
|
|
276
|
+
WindowOperator & {
|
|
277
|
+
window?: {
|
|
278
|
+
documents?: [string | number, string | number]
|
|
279
|
+
range?: [string | number, string | number]
|
|
280
|
+
unit?: 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond'
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
>
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export interface Skip {
|
|
288
|
+
/** [`$skip` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/) */
|
|
289
|
+
$skip: number
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export interface Sort {
|
|
293
|
+
/** [`$sort` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/) */
|
|
294
|
+
$sort: Record<string, 1 | -1 | Expression.Meta>
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export interface SortByCount {
|
|
298
|
+
/** [`$sortByCount` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/) */
|
|
299
|
+
$sortByCount: Expression;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export interface UnionWith {
|
|
303
|
+
/** [`$unionWith` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/) */
|
|
304
|
+
$unionWith:
|
|
305
|
+
| string
|
|
306
|
+
| { coll: string; pipeline?: Exclude<PipelineStage, PipelineStage.Out | PipelineStage.Merge>[] }
|
|
307
|
+
| { coll?: string; pipeline: Exclude<PipelineStage, PipelineStage.Out | PipelineStage.Merge>[] }
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
export interface Unset {
|
|
311
|
+
/** [`$unset` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/) */
|
|
312
|
+
$unset: string | string[]
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface Unwind {
|
|
316
|
+
/** [`$unwind` reference](https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/) */
|
|
317
|
+
$unwind: string | { path: string; includeArrayIndex?: string; preserveNullAndEmptyArrays?: boolean }
|
|
318
|
+
}
|
|
319
|
+
export interface VectorSearch {
|
|
320
|
+
/** [`$vectorSearch` reference](https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/) */
|
|
321
|
+
$vectorSearch: {
|
|
322
|
+
exact?: boolean;
|
|
323
|
+
index: string,
|
|
324
|
+
path: string,
|
|
325
|
+
queryVector: number[],
|
|
326
|
+
numCandidates?: number,
|
|
327
|
+
limit: number,
|
|
328
|
+
filter?: Expression,
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
}
|
|
333
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
declare module 'mongoose' {
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reference another Model
|
|
5
|
+
*/
|
|
6
|
+
type PopulatedDoc<
|
|
7
|
+
PopulatedType,
|
|
8
|
+
RawId extends RefType = (PopulatedType extends { _id?: RefType; } ? NonNullable<PopulatedType['_id']> : Types.ObjectId) | undefined
|
|
9
|
+
> = PopulatedType | RawId;
|
|
10
|
+
|
|
11
|
+
interface PopulateOptions {
|
|
12
|
+
/** space delimited path(s) to populate */
|
|
13
|
+
path: string;
|
|
14
|
+
/** fields to select */
|
|
15
|
+
select?: any;
|
|
16
|
+
/** query conditions to match */
|
|
17
|
+
match?: any;
|
|
18
|
+
/** optional model to use for population */
|
|
19
|
+
model?: string | Model<any>;
|
|
20
|
+
/** optional query options like sort, limit, etc */
|
|
21
|
+
options?: QueryOptions;
|
|
22
|
+
/** correct limit on populated array */
|
|
23
|
+
perDocumentLimit?: number;
|
|
24
|
+
/** optional boolean, set to `false` to allow populating paths that aren't in the schema */
|
|
25
|
+
strictPopulate?: boolean;
|
|
26
|
+
/** deep populate */
|
|
27
|
+
populate?: string | PopulateOptions | (string | PopulateOptions)[];
|
|
28
|
+
/**
|
|
29
|
+
* If true Mongoose will always set `path` to a document, or `null` if no document was found.
|
|
30
|
+
* If false Mongoose will always set `path` to an array, which will be empty if no documents are found.
|
|
31
|
+
* Inferred from schema by default.
|
|
32
|
+
*/
|
|
33
|
+
justOne?: boolean;
|
|
34
|
+
/** transform function to call on every populated doc */
|
|
35
|
+
transform?: (doc: any, id: any) => any;
|
|
36
|
+
/** Overwrite the schema-level local field to populate on if this is a populated virtual. */
|
|
37
|
+
localField?: string;
|
|
38
|
+
/** Overwrite the schema-level foreign field to populate on if this is a populated virtual. */
|
|
39
|
+
foreignField?: string;
|
|
40
|
+
/** Set to `false` to prevent Mongoose from repopulating paths that are already populated */
|
|
41
|
+
forceRepopulate?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Set to `true` to execute any populate queries one at a time, as opposed to in parallel.
|
|
44
|
+
* We recommend setting this option to `true` if using transactions, especially if also populating multiple paths or paths with multiple models.
|
|
45
|
+
* MongoDB server does **not** support multiple operations in parallel on a single transaction.
|
|
46
|
+
*/
|
|
47
|
+
ordered?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface PopulateOption {
|
|
51
|
+
populate?: string | string[] | PopulateOptions | PopulateOptions[];
|
|
52
|
+
}
|
|
53
|
+
}
|