mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-18 12:08:59 +08:00
2798 lines
100 KiB
TypeScript
2798 lines
100 KiB
TypeScript
// Type definitions for Mongoose 4.7.1
|
|
// Project: http://mongoosejs.com/
|
|
// Definitions by: simonxca <https://github.com/simonxca>, horiuchi <https://github.com/horiuchi>, sindrenm <https://github.com/sindrenm>, lukasz-zak <https://github.com/lukasz-zak>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// TypeScript Version: 2.3
|
|
|
|
/// <reference types="mongodb" />
|
|
/// <reference types="node" />
|
|
|
|
|
|
/*
|
|
* Guidelines for maintaining these definitions:
|
|
* - If you spot an error here or there, please submit a PR.
|
|
* Give some examples/links to documentation if you can.
|
|
*
|
|
* For patches and minor releases:
|
|
* - Browse the changelog at https://github.com/Automattic/mongoose/blob/master/History.md
|
|
* and make necessary changes. Afterwards, update the version number at the top so we know
|
|
* which version we are on.
|
|
*
|
|
* For major releases:
|
|
* - Refer to the updated docs at http://mongoosejs.com/docs/api.html
|
|
* - On the left-hand side of the docs is a list of .js files. Reset and update the TODO list below
|
|
* then go through one-by-one, making any updates to params list, return type, etc. For documentation
|
|
* changes just copy/paste them into here.
|
|
* - Check the files off as you go. Some files below might not have anything in them. That's ok, this
|
|
* is just a simple heuristic to keep track of our progress.
|
|
*
|
|
* TODO for version 4.x [updated][tested]:
|
|
* [x][x] index.js
|
|
* [x][x] querystream.js
|
|
* [x][x] connection.js
|
|
* [x][x] utils.js
|
|
* [x][x] browser.js
|
|
* [x][x] drivers/node-mongodb-native/collection.js
|
|
* [x][x] drivers/node-mongodb-native/connection.js
|
|
* [x][x] error/messages.js
|
|
* [x][x] error/validation.js
|
|
* [x][x] error.js
|
|
* [x][x] querycursor.js
|
|
* [x][x] virtualtype.js
|
|
* [x][x] schema.js
|
|
* [x][x] document.js
|
|
* [x][x] types/subdocument.js
|
|
* [x][x] types/array.js
|
|
* [x][x] types/documentarray.js
|
|
* [x][x] types/buffer.js
|
|
* [x][x] types/objectid.js
|
|
* [x][x] types/embedded.js
|
|
* [x][x] query.js
|
|
* [x][x] schema/array.js
|
|
* [x][x] schema/string.js
|
|
* [x][x] schema/documentarray.js
|
|
* [x][x] schema/number.js
|
|
* [x][x] schema/date.js
|
|
* [x][x] schema/buffer.js
|
|
* [x][x] schema/boolean.js
|
|
* [x][x] schema/objectid.js
|
|
* [x][x] schema/mixed.js
|
|
* [x][x] schema/embedded.js
|
|
* [x][x] aggregate.js
|
|
* [x][x] schematype.js
|
|
* [x][x] promise.js
|
|
* [x][x] ES6Promise.js
|
|
* [x][x] model.js
|
|
* [x][x] collection.js
|
|
*/
|
|
|
|
/*
|
|
For easier searching, add a header to each section like so:
|
|
To find a section, CTRL+F and type "section ___.js"
|
|
/*
|
|
* section filename.js
|
|
* http://mongoosejs.com/docs/api.html#filename-js
|
|
*/
|
|
|
|
declare module "mongoose" {
|
|
import events = require('events');
|
|
import mongodb = require('mongodb');
|
|
import stream = require('stream');
|
|
import mongoose = require('mongoose');
|
|
|
|
/*
|
|
* Some mongoose classes have the same name as the native JS classes
|
|
* Keep references to native classes using a "Native" prefix
|
|
*/
|
|
class NativeBuffer extends global.Buffer {}
|
|
class NativeDate extends global.Date {}
|
|
class NativeError extends global.Error {}
|
|
|
|
/*
|
|
* section index.js
|
|
* http://mongoosejs.com/docs/api.html#index-js
|
|
*/
|
|
export var DocumentProvider: any;
|
|
// recursive constructor
|
|
export var Mongoose: new(...args: any[]) => typeof mongoose;
|
|
type Mongoose = typeof mongoose;
|
|
export var SchemaTypes: typeof Schema.Types;
|
|
|
|
/** Expose connection states for user-land */
|
|
export var STATES: Object;
|
|
/** The default connection of the mongoose module. */
|
|
export var connection: Connection;
|
|
/** The node-mongodb-native driver Mongoose uses. */
|
|
export var mongo: typeof mongodb;
|
|
/** The Mongoose version */
|
|
export var version: string;
|
|
|
|
/**
|
|
* Opens the default mongoose connection.
|
|
* Options passed take precedence over options included in connection strings.
|
|
* @returns pseudo-promise wrapper around this
|
|
*/
|
|
export function connect(uris: string,
|
|
options?: ConnectionOptions,
|
|
callback?: (err: mongodb.MongoError) => void): MongooseThenable;
|
|
export function connect(uris: string,
|
|
callback?: (err: mongodb.MongoError) => void): MongooseThenable;
|
|
|
|
/**
|
|
* Creates a Connection instance.
|
|
* Each connection instance maps to a single database. This method is helpful
|
|
* when mangaging multiple db connections.
|
|
* @param uri a mongodb:// URI
|
|
* @param options options to pass to the driver
|
|
* @returns the created Connection object
|
|
*/
|
|
export function createConnection(): Connection;
|
|
export function createConnection(uri: string,
|
|
options?: ConnectionOptions
|
|
): Connection;
|
|
export function createConnection(host: string, database_name: string, port?: number,
|
|
options?: ConnectionOptions
|
|
): Connection;
|
|
|
|
/**
|
|
* Disconnects all connections.
|
|
* @param fn called after all connection close.
|
|
* @returns pseudo-promise wrapper around this
|
|
*/
|
|
export function disconnect(fn?: (error: any) => void): MongooseThenable;
|
|
|
|
/** Gets mongoose options */
|
|
export function get(key: string): any;
|
|
|
|
/**
|
|
* Defines a model or retrieves it.
|
|
* Models defined on the mongoose instance are available to all connection
|
|
* created by the same mongoose instance.
|
|
* @param name model name
|
|
* @param collection (optional, induced from model name)
|
|
* @param skipInit whether to skip initialization (defaults to false)
|
|
*/
|
|
export function model<T extends Document>(name: string, schema?: Schema, collection?: string,
|
|
skipInit?: boolean): Model<T>;
|
|
export function model<T extends Document, U extends Model<T>>(
|
|
name: string,
|
|
schema?: Schema,
|
|
collection?: string,
|
|
skipInit?: boolean
|
|
): U;
|
|
|
|
/**
|
|
* Returns an array of model names created on this instance of Mongoose.
|
|
* Does not include names of models created using connection.model().
|
|
*/
|
|
export function modelNames(): string[];
|
|
|
|
/**
|
|
* Declares a global plugin executed on all Schemas.
|
|
* Equivalent to calling .plugin(fn) on each Schema you create.
|
|
* @param fn plugin callback
|
|
* @param opts optional options
|
|
*/
|
|
export function plugin(fn: Function, opts?: Object): typeof mongoose;
|
|
|
|
/** Sets mongoose options */
|
|
export function set(key: string, value: any): void;
|
|
|
|
type MongooseThenable = typeof mongoose & {
|
|
/**
|
|
* Ability to use mongoose object as a pseudo-promise so .connect().then()
|
|
* and .disconnect().then() are viable.
|
|
*/
|
|
then<TRes>(onFulfill?: () => void | TRes | PromiseLike<TRes>,
|
|
onRejected?: (err: mongodb.MongoError) => void | TRes | PromiseLike<TRes>): Promise<TRes>;
|
|
|
|
/**
|
|
* Ability to use mongoose object as a pseudo-promise so .connect().then()
|
|
* and .disconnect().then() are viable.
|
|
*/
|
|
catch<TRes>(onRejected?: (err: mongodb.MongoError) => void | TRes | PromiseLike<TRes>): Promise<TRes>;
|
|
}
|
|
|
|
class CastError extends Error {
|
|
/**
|
|
* The Mongoose CastError constructor
|
|
* @param type The name of the type
|
|
* @param value The value that failed to cast
|
|
* @param path The path a.b.c in the doc where this cast error occurred
|
|
* @param reason The original error that was thrown
|
|
*/
|
|
constructor(type: string, value: any, path: string, reason?: NativeError);
|
|
}
|
|
|
|
/*
|
|
* section querystream.js
|
|
* http://mongoosejs.com/docs/api.html#querystream-js
|
|
*
|
|
* QueryStream can only be accessed using query#stream(), we only
|
|
* expose its interface here.
|
|
*/
|
|
interface QueryStream extends stream.Stream {
|
|
/**
|
|
* Provides a Node.js 0.8 style ReadStream interface for Queries.
|
|
* @event data emits a single Mongoose document
|
|
* @event error emits when an error occurs during streaming. This will emit before the close event.
|
|
* @event close emits when the stream reaches the end of the cursor or an error occurs, or the stream
|
|
* is manually destroyed. After this event, no more events are emitted.
|
|
*/
|
|
constructor(query: Query<any>, options?: {
|
|
/**
|
|
* optional function which accepts a mongoose document. The return value
|
|
* of the function will be emitted on data.
|
|
*/
|
|
transform?: Function;
|
|
[other: string]: any;
|
|
}): QueryStream;
|
|
|
|
/**
|
|
* Destroys the stream, closing the underlying cursor, which emits the close event.
|
|
* No more events will be emitted after the close event.
|
|
*/
|
|
destroy(err?: NativeError): void;
|
|
|
|
/** Pauses this stream. */
|
|
pause(): void;
|
|
/** Pipes this query stream into another stream. This method is inherited from NodeJS Streams. */
|
|
pipe<T extends NodeJS.WritableStream>(destination: T, options?: { end?: boolean; }): T;
|
|
/** Resumes this stream. */
|
|
resume(): void;
|
|
|
|
/** Flag stating whether or not this stream is paused. */
|
|
paused: boolean;
|
|
/** Flag stating whether or not this stream is readable. */
|
|
readable: boolean;
|
|
}
|
|
|
|
/*
|
|
* section connection.js
|
|
* http://mongoosejs.com/docs/api.html#connection-js
|
|
*
|
|
* The Connection class exposed by require('mongoose')
|
|
* is actually the driver's NativeConnection class.
|
|
* connection.js defines a base class that the native
|
|
* versions extend. See:
|
|
* http://mongoosejs.com/docs/api.html#drivers-node-mongodb-native-connection-js
|
|
*/
|
|
abstract class ConnectionBase extends events.EventEmitter {
|
|
/**
|
|
* For practical reasons, a Connection equals a Db.
|
|
* @param base a mongoose instance
|
|
* @event connecting Emitted when connection.{open,openSet}() is executed on this connection.
|
|
* @event connected Emitted when this connection successfully connects to the db. May be emitted multiple times in reconnected scenarios.
|
|
* @event open Emitted after we connected and onOpen is executed on all of this connections models.
|
|
* @event disconnecting Emitted when connection.close() was executed.
|
|
* @event disconnected Emitted after getting disconnected from the db.
|
|
* @event close Emitted after we disconnected and onClose executed on all of this connections models.
|
|
* @event reconnected Emitted after we connected and subsequently disconnected, followed by successfully another successfull connection.
|
|
* @event error Emitted when an error occurs on this connection.
|
|
* @event fullsetup Emitted in a replica-set scenario, when primary and at least one seconaries specified in the connection string are connected.
|
|
* @event all Emitted in a replica-set scenario, when all nodes specified in the connection string are connected.
|
|
*/
|
|
constructor(base: typeof mongoose);
|
|
|
|
/**
|
|
* Opens the connection to MongoDB.
|
|
* @param mongodb://uri or the host to which you are connecting
|
|
* @param database database name
|
|
* @param port database port
|
|
* @param options Mongoose forces the db option forceServerObjectId false and cannot be overridden.
|
|
* Mongoose defaults the server auto_reconnect options to true which can be overridden.
|
|
* See the node-mongodb-native driver instance for options that it understands.
|
|
* Options passed take precedence over options included in connection strings.
|
|
*/
|
|
open(connection_string: string, database?: string, port?: number,
|
|
options?: ConnectionOpenOptions, callback?: (err: any) => void): any;
|
|
|
|
/** Helper for dropDatabase() */
|
|
dropDatabase(callback?: (err: any) => void): Promise<void>;
|
|
|
|
/**
|
|
* Opens the connection to a replica set.
|
|
* @param uris comma-separated mongodb:// URIs
|
|
* @param database database name if not included in uris
|
|
* @param options passed to the internal driver
|
|
*/
|
|
openSet(uris: string, database?: string, options?: ConnectionOpenSetOptions,
|
|
callback?: (err: any) => void): any;
|
|
|
|
/** Closes the connection */
|
|
close(callback?: (err: any) => void): Promise<void>;
|
|
|
|
/**
|
|
* Retrieves a collection, creating it if not cached.
|
|
* Not typically needed by applications. Just talk to your collection through your model.
|
|
* @param name name of the collection
|
|
* @param options optional collection options
|
|
*/
|
|
collection(name: string, options?: Object): Collection;
|
|
|
|
/**
|
|
* Defines or retrieves a model.
|
|
* When no collection argument is passed, Mongoose produces a collection name by passing
|
|
* the model name to the utils.toCollectionName method. This method pluralizes the name.
|
|
* If you don't like this behavior, either pass a collection name or set your schemas
|
|
* collection name option.
|
|
* @param name the model name
|
|
* @param schema a schema. necessary when defining a model
|
|
* @param collection name of mongodb collection (optional) if not given it will be induced from model name
|
|
* @returns The compiled model
|
|
*/
|
|
model<T extends Document>(name: string, schema?: Schema, collection?: string): Model<T>;
|
|
model<T extends Document, U extends Model<T>>(
|
|
name: string,
|
|
schema?: Schema,
|
|
collection?: string
|
|
): U;
|
|
|
|
/** Returns an array of model names created on this connection. */
|
|
modelNames(): string[];
|
|
|
|
/** A hash of the global options that are associated with this connection */
|
|
config: Object;
|
|
|
|
/** The mongodb.Db instance, set when the connection is opened */
|
|
db: mongodb.Db;
|
|
|
|
/** A hash of the collections associated with this connection */
|
|
collections: { [index: string]: Collection };
|
|
|
|
/**
|
|
* Connection ready state
|
|
* 0 = disconnected
|
|
* 1 = connected
|
|
* 2 = connecting
|
|
* 3 = disconnecting
|
|
* Each state change emits its associated event name.
|
|
*/
|
|
readyState: number;
|
|
}
|
|
|
|
interface ConnectionOptionsBase {
|
|
/** passed to the connection db instance */
|
|
db?: any;
|
|
/** passed to the connection server instance(s) */
|
|
server?: any;
|
|
/** passed to the connection ReplSet instance */
|
|
replset?: any;
|
|
/** username for authentication */
|
|
user?: string;
|
|
/** password for authentication */
|
|
pass?: string;
|
|
/** options for authentication (see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate) */
|
|
auth?: any;
|
|
}
|
|
|
|
/** See the node-mongodb-native driver instance for options that it understands. */
|
|
interface ConnectionOpenOptions extends ConnectionOptionsBase {
|
|
/** mongoose-specific options */
|
|
config?: {
|
|
/**
|
|
* set to false to disable automatic index creation for all
|
|
* models associated with this connection.
|
|
*/
|
|
autoIndex?: boolean;
|
|
};
|
|
}
|
|
|
|
/** See the node-mongodb-native driver instance for options that it understands. */
|
|
interface ConnectionOpenSetOptions extends ConnectionOptionsBase {
|
|
/**
|
|
* If true, enables High Availability support for mongos
|
|
* If connecting to multiple mongos servers, set the mongos option to true.
|
|
*/
|
|
mongos?: boolean;
|
|
|
|
/** sets the underlying driver's promise library (see http://mongodb.github.io/node-mongodb-native/2.1/api/MongoClient.html) */
|
|
promiseLibrary?: any;
|
|
|
|
/** See http://mongoosejs.com/docs/connections.html#use-mongo-client **/
|
|
useMongoClient?: boolean;
|
|
}
|
|
|
|
interface ConnectionOptions extends
|
|
ConnectionOpenOptions,
|
|
ConnectionOpenSetOptions {}
|
|
|
|
/*
|
|
* section drivers/node-mongodb-native/collection.js
|
|
* http://mongoosejs.com/docs/api.html#drivers-node-mongodb-native-collection-js
|
|
*/
|
|
var Collection: Collection;
|
|
interface Collection extends CollectionBase {
|
|
/**
|
|
* Collection constructor
|
|
* @param name name of the collection
|
|
* @param conn A MongooseConnection instance
|
|
* @param opts optional collection options
|
|
*/
|
|
new(name: string, conn: Connection, opts?: Object): Collection;
|
|
/** Formatter for debug print args */
|
|
$format(arg: any): string;
|
|
/** Debug print helper */
|
|
$print(name: any, i: any, args: any[]): void;
|
|
/** Retreives information about this collections indexes. */
|
|
getIndexes(): any;
|
|
}
|
|
|
|
/*
|
|
* section drivers/node-mongodb-native/connection.js
|
|
* http://mongoosejs.com/docs/api.html#drivers-node-mongodb-native-connection-js
|
|
*/
|
|
class Connection extends ConnectionBase {
|
|
/**
|
|
* Switches to a different database using the same connection pool.
|
|
* @param name The database name
|
|
* @returns New Connection Object
|
|
*/
|
|
useDb(name: string): Connection;
|
|
|
|
/** Expose the possible connection states. */
|
|
static STATES: Object;
|
|
}
|
|
|
|
/*
|
|
* section error/validation.js
|
|
* http://mongoosejs.com/docs/api.html#error-validation-js
|
|
*/
|
|
class ValidationError extends Error {
|
|
/** Console.log helper */
|
|
toString(): string;
|
|
}
|
|
|
|
/*
|
|
* section error.js
|
|
* http://mongoosejs.com/docs/api.html#error-js
|
|
*/
|
|
class Error extends global.Error {
|
|
/**
|
|
* MongooseError constructor
|
|
* @param msg Error message
|
|
*/
|
|
constructor(msg: string);
|
|
|
|
/**
|
|
* The default built-in validator error messages. These may be customized.
|
|
* As you might have noticed, error messages support basic templating
|
|
* {PATH} is replaced with the invalid document path
|
|
* {VALUE} is replaced with the invalid value
|
|
* {TYPE} is replaced with the validator type such as "regexp", "min", or "user defined"
|
|
* {MIN} is replaced with the declared min value for the Number.min validator
|
|
* {MAX} is replaced with the declared max value for the Number.max validator
|
|
*/
|
|
static messages: Object;
|
|
|
|
/** For backwards compatibility. Same as mongoose.Error.messages */
|
|
static Messages: Object;
|
|
}
|
|
|
|
/*
|
|
* section querycursor.js
|
|
* http://mongoosejs.com/docs/api.html#querycursor-js
|
|
*
|
|
* Callback signatures are from: http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#close
|
|
* QueryCursor can only be accessed by query#cursor(), we only
|
|
* expose its interface to enable type-checking.
|
|
*/
|
|
interface QueryCursor<T extends Document> extends stream.Readable {
|
|
/**
|
|
* A QueryCursor is a concurrency primitive for processing query results
|
|
* one document at a time. A QueryCursor fulfills the Node.js streams3 API,
|
|
* in addition to several other mechanisms for loading documents from MongoDB
|
|
* one at a time.
|
|
* Unless you're an advanced user, do not instantiate this class directly.
|
|
* Use Query#cursor() instead.
|
|
* @param options query options passed to .find()
|
|
* @event cursor Emitted when the cursor is created
|
|
* @event error Emitted when an error occurred
|
|
* @event data Emitted when the stream is flowing and the next doc is ready
|
|
* @event end Emitted when the stream is exhausted
|
|
*/
|
|
constructor(query: Query<T>, options: Object): QueryCursor<T>;
|
|
|
|
/** Marks this cursor as closed. Will stop streaming and subsequent calls to next() will error. */
|
|
close(callback?: (error: any, result: any) => void): Promise<any>;
|
|
|
|
/**
|
|
* Execute fn for every document in the cursor. If fn returns a promise,
|
|
* will wait for the promise to resolve before iterating on to the next one.
|
|
* Returns a promise that resolves when done.
|
|
* @param callback executed when all docs have been processed
|
|
*/
|
|
eachAsync(fn: (doc: T) => any, callback?: (err: any) => void): Promise<T>;
|
|
|
|
/**
|
|
* Registers a transform function which subsequently maps documents retrieved
|
|
* via the streams interface or .next()
|
|
*/
|
|
map(fn: (doc: T) => T): this;
|
|
|
|
/**
|
|
* Get the next document from this cursor. Will return null when there are
|
|
* no documents left.
|
|
*/
|
|
next(callback?: (err: any, doc?: T) => void): Promise<any>;
|
|
}
|
|
|
|
/*
|
|
* section virtualtype.js
|
|
* http://mongoosejs.com/docs/api.html#virtualtype-js
|
|
*/
|
|
class VirtualType {
|
|
/** This is what mongoose uses to define virtual attributes via Schema.prototype.virtual. */
|
|
constructor(options: Object, name: string);
|
|
/** Applies getters to value using optional scope. */
|
|
applyGetters(value: Object, scope: Object): any;
|
|
/** Applies setters to value using optional scope. */
|
|
applySetters(value: Object, scope: Object): any;
|
|
/** Defines a getter. */
|
|
get(fn: Function): this;
|
|
/** Defines a setter. */
|
|
set(fn: Function): this;
|
|
}
|
|
|
|
/*
|
|
* section schema.js
|
|
* http://mongoosejs.com/docs/api.html#schema-js
|
|
*/
|
|
class Schema extends events.EventEmitter {
|
|
/**
|
|
* Schema constructor.
|
|
* When nesting schemas, (children in the example above), always declare
|
|
* the child schema first before passing it into its parent.
|
|
* @event init Emitted after the schema is compiled into a Model.
|
|
*/
|
|
constructor(definition?: SchemaDefinition, options?: SchemaOptions);
|
|
|
|
/** Adds key path / schema type pairs to this schema. */
|
|
add(obj: SchemaDefinition, prefix?: string): void;
|
|
|
|
/**
|
|
* Iterates the schemas paths similar to Array.forEach.
|
|
* @param fn callback function
|
|
* @returns this
|
|
*/
|
|
eachPath(fn: (path: string, type: SchemaType) => void): this;
|
|
|
|
/**
|
|
* Gets a schema option.
|
|
* @param key option name
|
|
*/
|
|
get(key: string): any;
|
|
|
|
/**
|
|
* Defines an index (most likely compound) for this schema.
|
|
* @param options Options to pass to MongoDB driver's createIndex() function
|
|
* @param options.expires Mongoose-specific syntactic sugar, uses ms to convert
|
|
* expires option into seconds for the expireAfterSeconds in the above link.
|
|
*/
|
|
index(fields: Object, options?: {
|
|
expires?: string;
|
|
[other: string]: any;
|
|
}): this;
|
|
|
|
/** Compiles indexes from fields and schema-level indexes */
|
|
indexes(): any[];
|
|
|
|
/**
|
|
* Loads an ES6 class into a schema. Maps setters + getters, static methods, and
|
|
* instance methods to schema virtuals, statics, and methods.
|
|
*/
|
|
loadClass(model: Function): this;
|
|
|
|
/**
|
|
* Adds an instance method to documents constructed from Models compiled from this schema.
|
|
* If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as methods.
|
|
*/
|
|
method(method: string, fn: Function): this;
|
|
method(methodObj: { [name: string]: Function }): this;
|
|
|
|
/**
|
|
* Gets/sets schema paths.
|
|
* Sets a path (if arity 2)
|
|
* Gets a path (if arity 1)
|
|
*/
|
|
path(path: string): SchemaType;
|
|
path(path: string, constructor: any): this;
|
|
|
|
/**
|
|
* Returns the pathType of path for this schema.
|
|
* @returns whether it is a real, virtual, nested, or ad-hoc/undefined path.
|
|
*/
|
|
pathType(path: string): string;
|
|
|
|
/**
|
|
* Registers a plugin for this schema.
|
|
* @param plugin callback
|
|
*/
|
|
plugin(plugin: (schema: Schema, options?: Object) => void, opts?: Object): this;
|
|
|
|
/**
|
|
* Defines a post hook for the document
|
|
* Post hooks fire on the event emitted from document instances of Models compiled
|
|
* from this schema.
|
|
* @param method name of the method to hook
|
|
* @param fn callback
|
|
*/
|
|
post<T extends Document>(method: string, fn: (
|
|
error: mongodb.MongoError, doc: T, next: (err?: NativeError) => void
|
|
) => void): this;
|
|
|
|
post<T extends Document>(method: string, fn: (
|
|
doc: T, next: (err?: NativeError) => void
|
|
) => void): this;
|
|
|
|
/**
|
|
* Defines a pre hook for the document.
|
|
*/
|
|
pre(method: string, parallel: boolean, fn: (next: (err?: NativeError) => void, done: (err?: NativeError) => void) => void,
|
|
errorCb?: (err: Error) => void): this;
|
|
pre(method: string, fn: (next: (err?: NativeError) => void) => void,
|
|
errorCb?: (err: Error) => void): this;
|
|
|
|
/**
|
|
* Adds a method call to the queue.
|
|
* @param name name of the document method to call later
|
|
* @param args arguments to pass to the method
|
|
*/
|
|
queue(name: string, args: any[]): this;
|
|
|
|
/**
|
|
* Removes the given path (or [paths]).
|
|
*/
|
|
remove(path: string | string[]): void;
|
|
|
|
/**
|
|
* @param invalidate refresh the cache
|
|
* @returns an Array of path strings that are required by this schema.
|
|
*/
|
|
requiredPaths(invalidate?: boolean): string[];
|
|
|
|
/**
|
|
* Sets/gets a schema option.
|
|
* @param key option name
|
|
* @param value if not passed, the current option value is returned
|
|
*/
|
|
set(key: string): any;
|
|
set(key: string, value: any): this;
|
|
|
|
/**
|
|
* Adds static "class" methods to Models compiled from this schema.
|
|
*/
|
|
static(name: string, fn: Function): this;
|
|
static(nameObj: { [name: string]: Function }): this;
|
|
|
|
/** Creates a virtual type with the given name. */
|
|
virtual(name: string, options?: Object): VirtualType;
|
|
|
|
/** Returns the virtual type with the given name. */
|
|
virtualpath(name: string): VirtualType;
|
|
|
|
/** The allowed index types */
|
|
static indexTypes: string[];
|
|
|
|
/**
|
|
* Reserved document keys.
|
|
* Keys in this object are names that are rejected in schema declarations
|
|
* b/c they conflict with mongoose functionality. Using these key name
|
|
* will throw an error.
|
|
*/
|
|
static reserved: Object;
|
|
|
|
/** Object of currently defined methods on this schema. */
|
|
methods: any;
|
|
/** Object of currently defined statics on this schema. */
|
|
statics: any;
|
|
/** The original object passed to the schema constructor */
|
|
obj: any;
|
|
}
|
|
|
|
interface SchemaOptions {
|
|
/** defaults to null (which means use the connection's autoIndex option) */
|
|
autoIndex?: boolean;
|
|
/** defaults to true */
|
|
bufferCommands?: boolean;
|
|
/** defaults to false */
|
|
capped?: boolean | number | { size?: number; max?: number; autoIndexId?: boolean; };
|
|
/** no default */
|
|
collection?: string;
|
|
/** defaults to "__t" */
|
|
discriminatorKey?: string;
|
|
/** defaults to false. */
|
|
emitIndexErrors?: boolean;
|
|
/** defaults to true */
|
|
id?: boolean;
|
|
/** defaults to true */
|
|
_id?: boolean;
|
|
/** controls document#toObject behavior when called manually - defaults to true */
|
|
minimize?: boolean;
|
|
read?: string;
|
|
/** defaults to true. */
|
|
safe?: boolean;
|
|
/** defaults to null */
|
|
shardKey?: boolean;
|
|
/** defaults to true */
|
|
strict?: boolean;
|
|
/** no default */
|
|
toJSON?: Object;
|
|
/** no default */
|
|
toObject?: Object;
|
|
/** defaults to 'type' */
|
|
typeKey?: string;
|
|
/** defaults to false */
|
|
useNestedStrict?: boolean;
|
|
/** defaults to true */
|
|
validateBeforeSave?: boolean;
|
|
/** defaults to "__v" */
|
|
versionKey?: string|boolean;
|
|
/** defaults to false */
|
|
retainKeyOrder?: boolean;
|
|
/**
|
|
* skipVersioning allows excluding paths from
|
|
* versioning (the internal revision will not be
|
|
* incremented even if these paths are updated).
|
|
*/
|
|
skipVersioning?: Object;
|
|
/**
|
|
* If set timestamps, mongoose assigns createdAt
|
|
* and updatedAt fields to your schema, the type
|
|
* assigned is Date.
|
|
*/
|
|
timestamps?: Object;
|
|
}
|
|
|
|
/*
|
|
* Intellisense for Schema definitions
|
|
*/
|
|
interface SchemaDefinition {
|
|
[path: string]: SchemaTypeOpts<any>;
|
|
}
|
|
|
|
/*
|
|
* The standard options available when configuring a schema type:
|
|
* new Schema({
|
|
* name: {
|
|
* type: String,
|
|
* required: true,
|
|
* ...
|
|
* }
|
|
* });
|
|
*
|
|
* Note: the properties have Object as a fallback type: | Object
|
|
* because this interface does not apply to a schematype that
|
|
* does not have a type property. Ex:
|
|
* new Schema({
|
|
* name: {
|
|
* first: String, // since name does not have a "type" property
|
|
* last: String // first and last can have any valid type
|
|
* ...
|
|
* }
|
|
* });
|
|
*
|
|
* References:
|
|
* - http://mongoosejs.com/docs/schematypes.html
|
|
* - http://mongoosejs.com/docs/api.html#schema_Schema.Types
|
|
*/
|
|
interface SchemaTypeOpts<T> {
|
|
/* Common Options for all schema types */
|
|
type?: T;
|
|
|
|
/** Sets a default value for this SchemaType. */
|
|
default?: SchemaTypeOpts.DefaultFn<T> | T;
|
|
|
|
/**
|
|
* Getters allow you to transform the representation of the data as it travels
|
|
* from the raw mongodb document to the value that you see.
|
|
*/
|
|
get?: (value: T, schematype?: this) => T | Object;
|
|
|
|
/** Declares the index options for this schematype. */
|
|
index?: SchemaTypeOpts.IndexOpts | boolean | string;
|
|
|
|
/**
|
|
* Adds a required validator to this SchemaType. The validator gets added
|
|
* to the front of this SchemaType's validators array using unshift().
|
|
*/
|
|
required?: SchemaTypeOpts.RequiredFn<T> |
|
|
boolean | [boolean, string] |
|
|
string | [string, string] |
|
|
Object;
|
|
|
|
/**
|
|
* Sets default select() behavior for this path.
|
|
* Set to true if this path should always be included in the results, false
|
|
* if it should be excluded by default. This setting can be overridden at
|
|
* the query level.
|
|
*/
|
|
select?: boolean | Object;
|
|
|
|
/**
|
|
* Setters allow you to transform the data before it gets to the raw mongodb
|
|
* document and is set as a value on an actual key.
|
|
*/
|
|
set?: (value: T, schematype?: this) => T | Object;
|
|
|
|
/** Declares a sparse index. */
|
|
sparse?: boolean | Object;
|
|
|
|
/** Declares a full text index. */
|
|
text?: boolean | Object;
|
|
|
|
/**
|
|
* Adds validator(s) for this document path.
|
|
* Validators always receive the value to validate as their first argument
|
|
* and must return Boolean. Returning false means validation failed.
|
|
*/
|
|
validate?: RegExp | [RegExp, string] |
|
|
SchemaTypeOpts.ValidateFn<T> | [SchemaTypeOpts.ValidateFn<T>, string] |
|
|
SchemaTypeOpts.ValidateOpts | SchemaTypeOpts.ValidateOpts[] |
|
|
Object;
|
|
|
|
/** Declares an unique index. */
|
|
unique?: boolean | Object;
|
|
|
|
|
|
/* Options for specific schema types (String, Number, Date, etc.) */
|
|
/** String only - Adds an enum validator */
|
|
enum?: T[] | SchemaTypeOpts.EnumOpts<T> | Object;
|
|
/** String only - Adds a lowercase setter. */
|
|
lowercase?: boolean | Object;
|
|
/** String only - Sets a regexp validator. */
|
|
match?: RegExp | [RegExp, string] | Object;
|
|
/** String only - Sets a maximum length validator. */
|
|
maxlength?: number | [number, string] | Object;
|
|
/** String only - Sets a minimum length validator. */
|
|
minlength?: number | [number, string] | Object;
|
|
/** String only - Adds a trim setter. */
|
|
trim?: boolean | Object;
|
|
/** String only - Adds an uppercase setter. */
|
|
uppercase?: boolean | Object;
|
|
|
|
/**
|
|
* Date, Number only - Sets a minimum number validator.
|
|
* Sets a minimum date validator.
|
|
*/
|
|
min?: number | [number, string] |
|
|
Date | [Date, string] |
|
|
Object;
|
|
|
|
/**
|
|
* Date, Number only - Sets a maximum number validator.
|
|
* Sets a maximum date validator.
|
|
*/
|
|
max?: number | [number, string] |
|
|
Date | [Date, string] |
|
|
Object;
|
|
|
|
/**
|
|
* Date only - Declares a TTL index (rounded to the nearest second)
|
|
* for Date types only.
|
|
*/
|
|
expires?: number | string | Object;
|
|
|
|
/** ObjectId only - Adds an auto-generated ObjectId default if turnOn is true. */
|
|
auto?: boolean | Object;
|
|
|
|
[other: string]: any;
|
|
}
|
|
|
|
// Interfaces specific to schema type options should be scoped in this namespace
|
|
namespace SchemaTypeOpts {
|
|
interface DefaultFn<T> {
|
|
(...args: any[]): T;
|
|
}
|
|
|
|
interface RequiredFn<T> {
|
|
(required: boolean, message?: string): T;
|
|
}
|
|
|
|
interface ValidateFn<T> {
|
|
(obj: RegExp | Function, message?: string, type?: string): T;
|
|
}
|
|
|
|
interface ValidateOpts {
|
|
validator?: RegExp | Function,
|
|
msg?: string,
|
|
type?: string
|
|
}
|
|
|
|
interface EnumOpts<T> {
|
|
values?: T[];
|
|
message?: string;
|
|
}
|
|
|
|
interface IndexOpts {
|
|
background?: boolean,
|
|
expires?: number | string
|
|
sparse?: boolean,
|
|
type?: string,
|
|
unique?: boolean,
|
|
}
|
|
}
|
|
|
|
/*
|
|
* section document.js
|
|
* http://mongoosejs.com/docs/api.html#document-js
|
|
*/
|
|
interface MongooseDocument extends MongooseDocumentOptionals { }
|
|
class MongooseDocument {
|
|
/** Checks if a path is set to its default. */
|
|
$isDefault(path?: string): boolean;
|
|
|
|
/**
|
|
* Takes a populated field and returns it to its unpopulated state.
|
|
* If the path was not populated, this is a no-op.
|
|
*/
|
|
depopulate(path: string): void;
|
|
|
|
/**
|
|
* Returns true if the Document stores the same data as doc.
|
|
* Documents are considered equal when they have matching _ids, unless neither document
|
|
* has an _id, in which case this function falls back to usin deepEqual().
|
|
* @param doc a document to compare
|
|
*/
|
|
equals(doc: MongooseDocument): boolean;
|
|
|
|
/**
|
|
* Explicitly executes population and returns a promise.
|
|
* Useful for ES2015 integration.
|
|
* @returns promise that resolves to the document when population is done
|
|
*/
|
|
execPopulate(): Promise<this>;
|
|
|
|
/**
|
|
* Returns the value of a path.
|
|
* @param type optionally specify a type for on-the-fly attributes
|
|
*/
|
|
get(path: string, type?: any): any;
|
|
|
|
/**
|
|
* Initializes the document without setters or marking anything modified.
|
|
* Called internally after a document is returned from mongodb.
|
|
* @param doc document returned by mongo
|
|
* @param fn callback
|
|
*/
|
|
init(doc: MongooseDocument, fn?: () => void): this;
|
|
init(doc: MongooseDocument, opts: Object, fn?: () => void): this;
|
|
|
|
/** Helper for console.log */
|
|
inspect(options?: Object): any;
|
|
|
|
/**
|
|
* Marks a path as invalid, causing validation to fail.
|
|
* The errorMsg argument will become the message of the ValidationError.
|
|
* The value argument (if passed) will be available through the ValidationError.value property.
|
|
* @param path the field to invalidate
|
|
* @param errorMsg the error which states the reason path was invalid
|
|
* @param value optional invalid value
|
|
* @param kind optional kind property for the error
|
|
* @returns the current ValidationError, with all currently invalidated paths
|
|
*/
|
|
invalidate(path: string, errorMsg: string | NativeError, value: any, kind?: string): ValidationError | boolean;
|
|
|
|
/** Returns true if path was directly set and modified, else false. */
|
|
isDirectModified(path: string): boolean;
|
|
|
|
/** Checks if path was initialized */
|
|
isInit(path: string): boolean;
|
|
|
|
/**
|
|
* Returns true if this document was modified, else false.
|
|
* If path is given, checks if a path or any full path containing path as part of its path
|
|
* chain has been modified.
|
|
*/
|
|
isModified(path?: string): boolean;
|
|
|
|
/** Checks if path was selected in the source query which initialized this document. */
|
|
isSelected(path: string): boolean;
|
|
|
|
/**
|
|
* Marks the path as having pending changes to write to the db.
|
|
* Very helpful when using Mixed types.
|
|
* @param path the path to mark modified
|
|
*/
|
|
markModified(path: string): void;
|
|
|
|
/** Returns the list of paths that have been modified. */
|
|
modifiedPaths(): string[];
|
|
|
|
/**
|
|
* Populates document references, executing the callback when complete.
|
|
* If you want to use promises instead, use this function with
|
|
* execPopulate()
|
|
* Population does not occur unless a callback is passed or you explicitly
|
|
* call execPopulate(). Passing the same path a second time will overwrite
|
|
* the previous path options. See Model.populate() for explaination of options.
|
|
* @param path The path to populate or an options object
|
|
* @param names The properties to fetch from the populated document
|
|
* @param callback When passed, population is invoked
|
|
*/
|
|
populate(callback: (err: any, res: this) => void): this;
|
|
populate(path: string, callback?: (err: any, res: this) => void): this;
|
|
populate(path: string, names: string, callback?: (err: any, res: this) => void): this;
|
|
populate(options: ModelPopulateOptions | ModelPopulateOptions[], callback?: (err: any, res: this) => void): this;
|
|
|
|
/** Gets _id(s) used during population of the given path. If the path was not populated, undefined is returned. */
|
|
populated(path: string): any;
|
|
|
|
/**
|
|
* Sets the value of a path, or many paths.
|
|
* @param path path or object of key/vals to set
|
|
* @param val the value to set
|
|
* @param type optionally specify a type for "on-the-fly" attributes
|
|
* @param options optionally specify options that modify the behavior of the set
|
|
*/
|
|
set(path: string, val: any, options?: Object): this;
|
|
set(path: string, val: any, type: any, options?: Object): this;
|
|
set(value: Object): this;
|
|
|
|
/**
|
|
* The return value of this method is used in calls to JSON.stringify(doc).
|
|
* This method accepts the same options as Document#toObject. To apply the
|
|
* options to every document of your schema by default, set your schemas
|
|
* toJSON option to the same argument.
|
|
*/
|
|
toJSON(options?: DocumentToObjectOptions): Object;
|
|
|
|
/**
|
|
* Converts this document into a plain javascript object, ready for storage in MongoDB.
|
|
* Buffers are converted to instances of mongodb.Binary for proper storage.
|
|
*/
|
|
toObject(options?: DocumentToObjectOptions): Object;
|
|
|
|
/** Helper for console.log */
|
|
toString(): string;
|
|
|
|
/**
|
|
* Clears the modified state on the specified path.
|
|
* @param path the path to unmark modified
|
|
*/
|
|
unmarkModified(path: string): void;
|
|
|
|
/** Sends an update command with this document _id as the query selector. */
|
|
update(doc: Object, callback?: (err: any, raw: any) => void): Query<any>;
|
|
update(doc: Object, options: ModelUpdateOptions,
|
|
callback?: (err: any, raw: any) => void): Query<any>;
|
|
|
|
/**
|
|
* Executes registered validation rules for this document.
|
|
* @param optional options internal options
|
|
* @param callback callback called after validation completes, passing an error if one occurred
|
|
*/
|
|
validate(callback?: (err: any) => void): Promise<void>;
|
|
validate(optional: Object, callback?: (err: any) => void): Promise<void>;
|
|
|
|
/**
|
|
* Executes registered validation rules (skipping asynchronous validators) for this document.
|
|
* This method is useful if you need synchronous validation.
|
|
* @param pathsToValidate only validate the given paths
|
|
* @returns MongooseError if there are errors during validation, or undefined if there is no error.
|
|
*/
|
|
validateSync(pathsToValidate?: string | string[]): Error;
|
|
|
|
/** Hash containing current validation errors. */
|
|
errors: Object;
|
|
/** This documents _id. */
|
|
_id: any;
|
|
/** Boolean flag specifying if the document is new. */
|
|
isNew: boolean;
|
|
/** The documents schema. */
|
|
schema: Schema;
|
|
}
|
|
|
|
interface MongooseDocumentOptionals {
|
|
/** The string version of this documents _id. */
|
|
id?: string;
|
|
}
|
|
|
|
interface DocumentToObjectOptions {
|
|
/** apply all getters (path and virtual getters) */
|
|
getters?: boolean;
|
|
/** apply virtual getters (can override getters option) */
|
|
virtuals?: boolean;
|
|
/** remove empty objects (defaults to true) */
|
|
minimize?: boolean;
|
|
/**
|
|
* A transform function to apply to the resulting document before returning
|
|
* @param doc The mongoose document which is being converted
|
|
* @param ret The plain object representation which has been converted
|
|
* @param options The options in use (either schema options or the options passed inline)
|
|
*/
|
|
transform?: (doc: any, ret: Object, options: Object) => any;
|
|
/** depopulate any populated paths, replacing them with their original refs (defaults to false) */
|
|
depopulate?: boolean;
|
|
/** whether to include the version key (defaults to true) */
|
|
versionKey?: boolean;
|
|
/**
|
|
* keep the order of object keys. If this is set to true,
|
|
* Object.keys(new Doc({ a: 1, b: 2}).toObject()) will
|
|
* always produce ['a', 'b'] (defaults to false)
|
|
*/
|
|
retainKeyOrder?: boolean;
|
|
}
|
|
|
|
namespace Types {
|
|
/*
|
|
* section types/subdocument.js
|
|
* http://mongoosejs.com/docs/api.html#types-subdocument-js
|
|
*/
|
|
class Subdocument extends MongooseDocument {
|
|
/** Returns the top level document of this sub-document. */
|
|
ownerDocument(): MongooseDocument;
|
|
|
|
/**
|
|
* Null-out this subdoc
|
|
* @param callback optional callback for compatibility with Document.prototype.remove
|
|
*/
|
|
remove(callback?: (err: any) => void): void;
|
|
remove(options: Object, callback?: (err: any) => void): void;
|
|
}
|
|
|
|
/*
|
|
* section types/array.js
|
|
* http://mongoosejs.com/docs/api.html#types-array-js
|
|
*/
|
|
class Array<T> extends global.Array<T> {
|
|
/**
|
|
* Atomically shifts the array at most one time per document save().
|
|
* Calling this mulitple times on an array before saving sends the same command as
|
|
* calling it once. This update is implemented using the MongoDB $pop method which
|
|
* enforces this restriction.
|
|
*/
|
|
$shift(): T;
|
|
|
|
/** Alias of pull */
|
|
remove(...args: any[]): this;
|
|
|
|
/**
|
|
* Pops the array atomically at most one time per document save().
|
|
* Calling this mulitple times on an array before saving sends the same command as
|
|
* calling it once. This update is implemented using the MongoDB $pop method which
|
|
* enforces this restriction.
|
|
*/
|
|
$pop(): T;
|
|
|
|
/**
|
|
* Adds values to the array if not already present.
|
|
* @returns the values that were added
|
|
*/
|
|
addToSet(...args: any[]): T[];
|
|
|
|
/**
|
|
* Return the index of obj or -1 if not found.
|
|
* @param obj he item to look for
|
|
*/
|
|
indexOf(obj: any): number;
|
|
|
|
/** Helper for console.log */
|
|
inspect(): any;
|
|
|
|
/**
|
|
* Marks the entire array as modified, which if saved, will store it as a $set
|
|
* operation, potentially overwritting any changes that happen between when you
|
|
* retrieved the object and when you save it.
|
|
* @returns new length of the array
|
|
*/
|
|
nonAtomicPush(...args: any[]): number;
|
|
|
|
/**
|
|
* Wraps Array#pop with proper change tracking.
|
|
* marks the entire array as modified which will pass the entire thing to $set
|
|
* potentially overwritting any changes that happen between when you retrieved
|
|
* the object and when you save it.
|
|
*/
|
|
pop(): T;
|
|
|
|
/**
|
|
* Pulls items from the array atomically. Equality is determined by casting
|
|
* the provided value to an embedded document and comparing using
|
|
* the Document.equals() function.
|
|
*/
|
|
pull(...args: any[]): this;
|
|
|
|
/**
|
|
* Wraps Array#push with proper change tracking.
|
|
* @returns new length of the array
|
|
*/
|
|
push(...args: any[]): number;
|
|
|
|
/** Sets the casted val at index i and marks the array modified. */
|
|
set(i: number, val: any): this;
|
|
|
|
/**
|
|
* Wraps Array#shift with proper change tracking.
|
|
* Marks the entire array as modified, which if saved, will store it as a $set operation,
|
|
* potentially overwritting any changes that happen between when you retrieved the object
|
|
* and when you save it.
|
|
*/
|
|
shift(): T;
|
|
|
|
/**
|
|
* Wraps Array#sort with proper change tracking.
|
|
* Marks the entire array as modified, which if saved, will store it as a $set operation,
|
|
* potentially overwritting any changes that happen between when you retrieved the object
|
|
* and when you save it.
|
|
*/
|
|
// some lib.d.ts have return type "this" and others have return type "T[]"
|
|
// which causes errors. Let the inherited array provide the sort() method.
|
|
//sort(compareFn?: (a: T, b: T) => number): T[];
|
|
|
|
/**
|
|
* Wraps Array#splice with proper change tracking and casting.
|
|
* Marks the entire array as modified, which if saved, will store it as a $set operation,
|
|
* potentially overwritting any changes that happen between when you retrieved the object
|
|
* and when you save it.
|
|
*/
|
|
splice(...args: any[]): T[];
|
|
|
|
/** Returns a native js Array. */
|
|
toObject(options?: Object): T[];
|
|
|
|
/**
|
|
* Wraps Array#unshift with proper change tracking.
|
|
* Marks the entire array as modified, which if saved, will store it as a $set operation,
|
|
* potentially overwritting any changes that happen between when you retrieved the object
|
|
* and when you save it.
|
|
*/
|
|
unshift(...args: any[]): number;
|
|
}
|
|
|
|
/*
|
|
* section types/documentarray.js
|
|
* http://mongoosejs.com/docs/api.html#types-documentarray-js
|
|
*/
|
|
class DocumentArray<T extends MongooseDocument> extends Types.Array<T> {
|
|
/**
|
|
* Creates a subdocument casted to this schema.
|
|
* This is the same subdocument constructor used for casting.
|
|
* @param obj the value to cast to this arrays SubDocument schema
|
|
*/
|
|
create(obj: Object): T;
|
|
|
|
/**
|
|
* Searches array items for the first document with a matching _id.
|
|
* @returns the subdocument or null if not found.
|
|
*/
|
|
id(id: ObjectId | string | number | NativeBuffer): T;
|
|
|
|
/** Helper for console.log */
|
|
inspect(): T[];
|
|
|
|
/**
|
|
* Returns a native js Array of plain js objects
|
|
* @param options optional options to pass to each documents toObject
|
|
* method call during conversion
|
|
*/
|
|
toObject(options?: Object): T[];
|
|
}
|
|
|
|
/*
|
|
* section types/buffer.js
|
|
* http://mongoosejs.com/docs/api.html#types-buffer-js
|
|
*/
|
|
class Buffer extends global.Buffer {
|
|
/**
|
|
* Copies the buffer.
|
|
* Buffer#copy does not mark target as modified so you must copy
|
|
* from a MongooseBuffer for it to work as expected. This is a
|
|
* work around since copy modifies the target, not this.
|
|
*/
|
|
copy(target: NativeBuffer, ...nodeBufferArgs: any[]): number;
|
|
|
|
/** Determines if this buffer is equals to other buffer */
|
|
equals(other: NativeBuffer): boolean;
|
|
|
|
/** Sets the subtype option and marks the buffer modified. */
|
|
subtype(subtype: number): void;
|
|
|
|
/** Converts this buffer to its Binary type representation. */
|
|
toObject(subtype?: number): mongodb.Binary;
|
|
|
|
/** Writes the buffer. */
|
|
write(string: string, ...nodeBufferArgs: any[]): number;
|
|
}
|
|
|
|
/*
|
|
* section types/objectid.js
|
|
* http://mongoosejs.com/docs/api.html#types-objectid-js
|
|
*/
|
|
var ObjectId: ObjectIdConstructor;
|
|
|
|
// mongodb.ObjectID does not allow mongoose.Types.ObjectId(id). This is
|
|
// commonly used in mongoose and is found in an example in the docs:
|
|
// http://mongoosejs.com/docs/api.html#aggregate_Aggregate
|
|
// constructor exposes static methods of mongodb.ObjectID and ObjectId(id)
|
|
type ObjectIdConstructor = typeof mongodb.ObjectID & {
|
|
(s?: string | number): mongodb.ObjectID;
|
|
};
|
|
|
|
// var objectId: mongoose.Types.ObjectId should reference mongodb.ObjectID not
|
|
// the ObjectIdConstructor, so we add the interface below
|
|
interface ObjectId extends mongodb.ObjectID {}
|
|
|
|
class Decimal128 extends mongodb.Decimal128 {}
|
|
|
|
/*
|
|
* section types/embedded.js
|
|
* http://mongoosejs.com/docs/api.html#types-embedded-js
|
|
*/
|
|
class Embedded extends MongooseDocument {
|
|
/** Helper for console.log */
|
|
inspect(): Object;
|
|
|
|
/**
|
|
* Marks a path as invalid, causing validation to fail.
|
|
* @param path the field to invalidate
|
|
* @param err error which states the reason path was invalid
|
|
*/
|
|
invalidate(path: string, err: string | NativeError): boolean;
|
|
|
|
/** Returns the top level document of this sub-document. */
|
|
ownerDocument(): MongooseDocument;
|
|
/** Returns this sub-documents parent document. */
|
|
parent(): MongooseDocument;
|
|
/** Returns this sub-documents parent array. */
|
|
parentArray(): DocumentArray<MongooseDocument>;
|
|
|
|
/** Removes the subdocument from its parent array. */
|
|
remove(options?: {
|
|
noop?: boolean;
|
|
}, fn?: (err: any) => void): this;
|
|
|
|
/**
|
|
* Marks the embedded doc modified.
|
|
* @param path the path which changed
|
|
*/
|
|
markModified(path: string): void;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* section query.js
|
|
* http://mongoosejs.com/docs/api.html#query-js
|
|
*
|
|
* Query<T> is for backwards compatibility. Example: Query<T>.find() returns Query<T[]>.
|
|
* If later in the query chain a method returns Query<T>, we will need to know type T.
|
|
* So we save this type as the second type parameter in DocumentQuery. Since people have
|
|
* been using Query<T>, we set it as an alias of DocumentQuery.
|
|
*/
|
|
class Query<T> extends DocumentQuery<T, any> {}
|
|
class DocumentQuery<T, DocType extends Document> extends mquery {
|
|
/**
|
|
* Specifies a javascript function or expression to pass to MongoDBs query system.
|
|
* Only use $where when you have a condition that cannot be met using other MongoDB
|
|
* operators like $lt. Be sure to read about all of its caveats before using.
|
|
* @param js javascript string or function
|
|
*/
|
|
$where(js: string | Function): this;
|
|
|
|
/**
|
|
* Specifies an $all query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
all(val: number): this;
|
|
all(path: string, val: number): this;
|
|
|
|
/**
|
|
* Specifies arguments for a $and condition.
|
|
* @param array array of conditions
|
|
*/
|
|
and(array: Object[]): this;
|
|
|
|
/** Specifies the batchSize option. Cannot be used with distinct() */
|
|
batchSize(val: number): this;
|
|
|
|
/**
|
|
* Specifies a $box condition
|
|
* @param Upper Right Coords
|
|
*/
|
|
box(val: Object): this;
|
|
box(lower: number[], upper: number[]): this;
|
|
|
|
/** Casts this query to the schema of model, If obj is present, it is cast instead of this query.*/
|
|
cast(model: any, obj?: Object): Object;
|
|
|
|
/**
|
|
* Executes the query returning a Promise which will be
|
|
* resolved with either the doc(s) or rejected with the error.
|
|
* Like .then(), but only takes a rejection handler.
|
|
*/
|
|
catch<TRes>(reject?: (err: any) => void | TRes | PromiseLike<TRes>): Promise<TRes>;
|
|
|
|
/**
|
|
* DEPRECATED Alias for circle
|
|
* Specifies a $center or $centerSphere condition.
|
|
* @deprecated Use circle instead.
|
|
*/
|
|
center(area: Object): this;
|
|
center(path: string, area: Object): this;
|
|
|
|
/**
|
|
* DEPRECATED Specifies a $centerSphere condition
|
|
* @deprecated Use circle instead.
|
|
*/
|
|
centerSphere(path: string, val: Object): this;
|
|
centerSphere(val: Object): this;
|
|
|
|
/** Specifies a $center or $centerSphere condition. */
|
|
circle(area: Object): this;
|
|
circle(path: string, area: Object): this;
|
|
|
|
/** Adds a collation to this op (MongoDB 3.4 and up) */
|
|
collation(value: CollationOptions): this;
|
|
|
|
/** Specifies the comment option. Cannot be used with distinct() */
|
|
comment(val: string): this;
|
|
|
|
/**
|
|
* Specifying this query as a count query. Passing a callback executes the query.
|
|
* @param criteria mongodb selector
|
|
*/
|
|
count(callback?: (err: any, count: number) => void): Query<number>;
|
|
count(criteria: Object, callback?: (err: any, count: number) => void): Query<number>;
|
|
|
|
/**
|
|
* Returns a wrapper around a mongodb driver cursor. A Query<T>Cursor exposes a
|
|
* Streams3-compatible interface, as well as a .next() function.
|
|
*/
|
|
cursor(options?: Object): QueryCursor<DocType>;
|
|
|
|
/** Declares or executes a distict() operation. Passing a callback executes the query. */
|
|
distinct(callback?: (err: any, res: any[]) => void): Query<any[]>;
|
|
distinct(field: string, callback?: (err: any, res: any[]) => void): Query<any[]>;
|
|
distinct(field: string, criteria: Object | Query<any>,
|
|
callback?: (err: any, res: any[]) => void): Query<any[]>;
|
|
|
|
/** Specifies an $elemMatch condition */
|
|
elemMatch(criteria: (elem: Query<any>) => void): this;
|
|
elemMatch(criteria: Object): this;
|
|
elemMatch(path: string | Object | Function, criteria: (elem: Query<any>) => void): this;
|
|
elemMatch(path: string | Object | Function, criteria: Object): this;
|
|
|
|
/** Specifies the complementary comparison value for paths specified with where() */
|
|
equals(val: Object): this;
|
|
|
|
/** Executes the query */
|
|
exec(callback?: (err: any, res: T) => void): Promise<T>;
|
|
exec(operation: string | Function, callback?: (err: any, res: T) => void): Promise<T>;
|
|
|
|
/** Specifies an $exists condition */
|
|
exists(val?: boolean): this;
|
|
exists(path: string, val?: boolean): this;
|
|
|
|
/**
|
|
* Finds documents. When no callback is passed, the query is not executed. When the
|
|
* query is executed, the result will be an array of documents.
|
|
* @param criteria mongodb selector
|
|
*/
|
|
find(callback?: (err: any, res: DocType[]) => void): DocumentQuery<DocType[], DocType>;
|
|
find(criteria: Object,
|
|
callback?: (err: any, res: DocType[]) => void): DocumentQuery<DocType[], DocType>;
|
|
|
|
/**
|
|
* Declares the query a findOne operation. When executed, the first found document is
|
|
* passed to the callback. Passing a callback executes the query. The result of the query
|
|
* is a single document.
|
|
* @param criteria mongodb selector
|
|
* @param projection optional fields to return
|
|
*/
|
|
findOne(callback?: (err: any, res: DocType | null) => void): DocumentQuery<DocType | null, DocType>;
|
|
findOne(criteria: Object,
|
|
callback?: (err: any, res: DocType | null) => void): DocumentQuery<DocType | null, DocType>;
|
|
|
|
/**
|
|
* Issues a mongodb findAndModify remove command.
|
|
* Finds a matching document, removes it, passing the found document (if any) to the
|
|
* callback. Executes immediately if callback is passed.
|
|
*/
|
|
findOneAndRemove(callback?: (error: any, doc: DocType | null, result: any) => void): DocumentQuery<DocType | null, DocType>;
|
|
findOneAndRemove(conditions: Object,
|
|
callback?: (error: any, doc: DocType | null, result: any) => void): DocumentQuery<DocType | null, DocType>;
|
|
findOneAndRemove(conditions: Object, options: QueryFindOneAndRemoveOptions,
|
|
callback?: (error: any, doc: DocType | null, result: any) => void): DocumentQuery<DocType | null, DocType>;
|
|
|
|
/**
|
|
* Issues a mongodb findAndModify update command.
|
|
* Finds a matching document, updates it according to the update arg, passing any options, and returns
|
|
* the found document (if any) to the callback. The query executes immediately if callback is passed.
|
|
*/
|
|
findOneAndUpdate(callback?: (err: any, doc: DocType | null) => void): DocumentQuery<DocType | null, DocType>;
|
|
findOneAndUpdate(update: Object,
|
|
callback?: (err: any, doc: DocType | null, res: any) => void): DocumentQuery<DocType | null, DocType>;
|
|
findOneAndUpdate(query: Object | Query<any>, update: Object,
|
|
callback?: (err: any, doc: DocType | null, res: any) => void): DocumentQuery<DocType | null, DocType>;
|
|
findOneAndUpdate(query: Object | Query<any>, update: Object, options: QueryFindOneAndUpdateOptions,
|
|
callback?: (err: any, doc: DocType | null, res: any) => void): DocumentQuery<DocType | null, DocType>;
|
|
|
|
/**
|
|
* Specifies a $geometry condition. geometry() must come after either intersects() or within().
|
|
* @param object Must contain a type property which is a String and a coordinates property which
|
|
* is an Array. See the examples.
|
|
*/
|
|
geometry(object: { type: string, coordinates: any[] }): this;
|
|
|
|
/**
|
|
* Returns the current query conditions as a JSON object.
|
|
* @returns current query conditions
|
|
*/
|
|
getQuery(): any;
|
|
|
|
/**
|
|
* Returns the current update operations as a JSON object.
|
|
* @returns current update operations
|
|
*/
|
|
getUpdate(): any;
|
|
|
|
/**
|
|
* Specifies a $gt query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
gt(val: number): this;
|
|
gt(path: string, val: number): this;
|
|
|
|
/**
|
|
* Specifies a $gte query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
gte(val: number): this;
|
|
gte(path: string, val: number): this;
|
|
|
|
/**
|
|
* Sets query hints.
|
|
* @param val a hint object
|
|
*/
|
|
hint(val: Object): this;
|
|
|
|
/**
|
|
* Specifies an $in query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
in(val: any[]): this;
|
|
in(path: string, val: any[]): this;
|
|
|
|
/** Declares an intersects query for geometry(). MUST be used after where(). */
|
|
intersects(arg?: Object): this;
|
|
|
|
/**
|
|
* Sets the lean option.
|
|
* Documents returned from queries with the lean option enabled are plain
|
|
* javascript objects, not MongooseDocuments. They have no save method,
|
|
* getters/setters or other Mongoose magic applied.
|
|
* @param bool defaults to true
|
|
*/
|
|
lean(bool?: boolean): Query<Object>;
|
|
|
|
/** Specifies the maximum number of documents the query will return. Cannot be used with distinct() */
|
|
limit(val: number): this;
|
|
|
|
/**
|
|
* Specifies a $lt query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
lt(val: number): this;
|
|
lt(path: string, val: number): this;
|
|
|
|
/**
|
|
* Specifies a $lte query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
lte(val: number): this;
|
|
lte(path: string, val: number): this;
|
|
|
|
/**
|
|
* Specifies a $maxDistance query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
maxDistance(val: number): this;
|
|
maxDistance(path: string, val: number): this;
|
|
|
|
/** @deprecated Alias of maxScan */
|
|
maxscan(val: number): this;
|
|
/** Specifies the maxScan option. Cannot be used with distinct() */
|
|
maxScan(val: number): this;
|
|
|
|
/**
|
|
* Merges another Query or conditions object into this one.
|
|
* When a Query is passed, conditions, field selection and options are merged.
|
|
*/
|
|
merge(source: Object | Query<any>): this;
|
|
|
|
/** Specifies a $mod condition */
|
|
mod(val: number[]): this;
|
|
mod(path: string, val: number[]): this;
|
|
|
|
/**
|
|
* Specifies a $ne query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
ne(val: any): this;
|
|
ne(path: string, val: any): this;
|
|
|
|
/** Specifies a $near or $nearSphere condition. */
|
|
near(val: Object): this;
|
|
near(path: string, val: Object): this;
|
|
|
|
/**
|
|
* DEPRECATED Specifies a $nearSphere condition
|
|
* @deprecated Use query.near() instead with the spherical option set to true.
|
|
*/
|
|
nearSphere(val: Object): this;
|
|
nearSphere(path: string, val: Object): this;
|
|
|
|
/**
|
|
* Specifies a $nin query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
nin(val: any[]): this;
|
|
nin(path: string, val: any[]): this;
|
|
|
|
/**
|
|
* Specifies arguments for a $nor condition.
|
|
* @param array array of conditions
|
|
*/
|
|
nor(array: Object[]): this;
|
|
|
|
/**
|
|
* Specifies arguments for an $or condition.
|
|
* @param array array of conditions
|
|
*/
|
|
or(array: Object[]): this;
|
|
|
|
/** Specifies a $polygon condition */
|
|
polygon(...coordinatePairs: number[][]): this;
|
|
polygon(path: string, ...coordinatePairs: number[][]): this;
|
|
|
|
/**
|
|
* Specifies paths which should be populated with other documents.
|
|
* Paths are populated after the query executes and a response is received. A separate
|
|
* query is then executed for each path specified for population. After a response for
|
|
* each query has also been returned, the results are passed to the callback.
|
|
* @param path either the path to populate or an object specifying all parameters
|
|
* @param select Field selection for the population query
|
|
* @param model The model you wish to use for population. If not specified, populate
|
|
* will look up the model by the name in the Schema's ref field.
|
|
* @param match Conditions for the population query
|
|
* @param options Options for the population query (sort, etc)
|
|
*/
|
|
populate(path: string | Object, select?: string | Object, model?: any,
|
|
match?: Object, options?: Object): this;
|
|
populate(options: ModelPopulateOptions | ModelPopulateOptions[]): this;
|
|
|
|
/**
|
|
* Determines the MongoDB nodes from which to read.
|
|
* @param pref one of the listed preference options or aliases
|
|
* @tags optional tags for this query
|
|
*/
|
|
read(pref: string, tags?: Object[]): this;
|
|
|
|
/**
|
|
* Specifies a $regex query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
regex(val: RegExp): this;
|
|
regex(path: string, val: RegExp): this;
|
|
|
|
/**
|
|
* Declare and/or execute this query as a remove() operation.
|
|
* The operation is only executed when a callback is passed. To force execution without a callback,
|
|
* you must first call remove() and then execute it by using the exec() method.
|
|
* @param criteria mongodb selector
|
|
*/
|
|
remove(callback?: (err: any) => void): Query<mongodb.WriteOpResult>;
|
|
remove(criteria: Object | Query<any>, callback?: (err: any) => void): Query<mongodb.WriteOpResult>;
|
|
|
|
/** Specifies which document fields to include or exclude (also known as the query "projection") */
|
|
select(arg: string | Object): this;
|
|
/** Determines if field selection has been made. */
|
|
selected(): boolean;
|
|
/** Determines if exclusive field selection has been made.*/
|
|
selectedExclusively(): boolean;
|
|
/** Determines if inclusive field selection has been made. */
|
|
selectedInclusively(): boolean;
|
|
/** Sets query options. */
|
|
setOptions(options: Object): this;
|
|
|
|
/**
|
|
* Specifies a $size query condition.
|
|
* When called with one argument, the most recent path passed to where() is used.
|
|
*/
|
|
size(val: number): this;
|
|
size(path: string, val: number): this;
|
|
|
|
/** Specifies the number of documents to skip. Cannot be used with distinct() */
|
|
skip(val: number): this;
|
|
|
|
/**
|
|
* DEPRECATED Sets the slaveOk option.
|
|
* @param v defaults to true
|
|
* @deprecated in MongoDB 2.2 in favor of read preferences.
|
|
*/
|
|
slaveOk(v?: boolean): this;
|
|
|
|
/**
|
|
* Specifies a $slice projection for an array.
|
|
* @param val number/range of elements to slice
|
|
*/
|
|
slice(val: number | number[]): this;
|
|
slice(path: string, val: number | number[]): this;
|
|
|
|
/** Specifies this query as a snapshot query. Cannot be used with distinct() */
|
|
snapshot(v?: boolean): this;
|
|
|
|
/**
|
|
* Sets the sort order
|
|
* If an object is passed, values allowed are asc, desc, ascending, descending, 1, and -1.
|
|
* If a string is passed, it must be a space delimited list of path names. The
|
|
* sort order of each path is ascending unless the path name is prefixed with -
|
|
* which will be treated as descending.
|
|
*/
|
|
sort(arg: string | Object): this;
|
|
|
|
/** Returns a Node.js 0.8 style read stream interface. */
|
|
stream(options?: { transform?: Function; }): QueryStream;
|
|
|
|
/**
|
|
* Sets the tailable option (for use with capped collections). Cannot be used with distinct()
|
|
* @param bool defaults to true
|
|
* @param opts options to set
|
|
* @param opts.numberOfRetries if cursor is exhausted, retry this many times before giving up
|
|
* @param opts.tailableRetryInterval if cursor is exhausted, wait this many milliseconds before retrying
|
|
*/
|
|
tailable(bool?: boolean, opts?: {
|
|
numberOfRetries?: number;
|
|
tailableRetryInterval?: number;
|
|
}): this;
|
|
|
|
/** Executes this query and returns a promise */
|
|
then<TRes>(resolve?: (res: T) => void | TRes | PromiseLike<TRes>,
|
|
reject?: (err: any) => void | TRes | PromiseLike<TRes>): Promise<TRes>;
|
|
|
|
/**
|
|
* Converts this query to a customized, reusable query
|
|
* constructor with all arguments and options retained.
|
|
*/
|
|
toConstructor<T>(): new(...args: any[]) => Query<T>;
|
|
toConstructor<T, Doc extends Document>(): new(...args: any[]) => DocumentQuery<T, Doc>;
|
|
|
|
/**
|
|
* Declare and/or execute this query as an update() operation.
|
|
* All paths passed that are not $atomic operations will become $set ops.
|
|
* @param doc the update command
|
|
*/
|
|
update(callback?: (err: any, affectedRows: number) => void): Query<number>;
|
|
update(doc: Object, callback?: (err: any, affectedRows: number) => void): Query<number>;
|
|
update(criteria: Object, doc: Object,
|
|
callback?: (err: any, affectedRows: number) => void): Query<number>;
|
|
update(criteria: Object, doc: Object, options: QueryUpdateOptions,
|
|
callback?: (err: any, affectedRows: number) => void): Query<number>;
|
|
|
|
/** Specifies a path for use with chaining. */
|
|
where(path?: string | Object, val?: any): this;
|
|
|
|
/** Defines a $within or $geoWithin argument for geo-spatial queries. */
|
|
within(val?: Object): this;
|
|
within(coordinate: number[], ...coordinatePairs: number[][]): this;
|
|
|
|
/** Flag to opt out of using $geoWithin. */
|
|
static use$geoWithin: boolean;
|
|
}
|
|
|
|
// https://github.com/aheckmann/mquery
|
|
// mquery currently does not have a type definition please
|
|
// replace it if one is ever created
|
|
class mquery {}
|
|
|
|
interface QueryFindOneAndRemoveOptions {
|
|
/** if multiple docs are found by the conditions, sets the sort order to choose which doc to update */
|
|
sort?: any;
|
|
/** puts a time limit on the query - requires mongodb >= 2.6.0 */
|
|
maxTimeMS?: number;
|
|
/** if true, passes the raw result from the MongoDB driver as the third callback parameter */
|
|
passRawResult?: boolean;
|
|
}
|
|
|
|
interface QueryFindOneAndUpdateOptions extends QueryFindOneAndRemoveOptions {
|
|
/** if true, return the modified document rather than the original. defaults to false (changed in 4.0) */
|
|
new?: boolean;
|
|
/** creates the object if it doesn't exist. defaults to false. */
|
|
upsert?: boolean;
|
|
/** Field selection. Equivalent to .select(fields).findOneAndUpdate() */
|
|
fields?: Object | string;
|
|
/** if true, runs update validators on this command. Update validators validate the update operation against the model's schema. */
|
|
runValidators?: boolean;
|
|
/**
|
|
* if this and upsert are true, mongoose will apply the defaults specified in the model's schema if a new document
|
|
* is created. This option only works on MongoDB >= 2.4 because it relies on MongoDB's $setOnInsert operator.
|
|
*/
|
|
setDefaultsOnInsert?: boolean;
|
|
/**
|
|
* if set to 'query' and runValidators is on, this will refer to the query in custom validator
|
|
* functions that update validation runs. Does nothing if runValidators is false.
|
|
*/
|
|
context?: string;
|
|
}
|
|
|
|
interface QueryUpdateOptions extends ModelUpdateOptions {
|
|
/**
|
|
* if set to 'query' and runValidators is on, this will refer to the query
|
|
* in customvalidator functions that update validation runs. Does nothing
|
|
* if runValidators is false.
|
|
*/
|
|
context?: string;
|
|
}
|
|
|
|
interface CollationOptions {
|
|
locale?: string;
|
|
caseLevel?: boolean;
|
|
caseFirst?: string;
|
|
strength?: number;
|
|
numericOrdering?: boolean;
|
|
alternate?: string;
|
|
maxVariable?: string;
|
|
backwards?: boolean;
|
|
}
|
|
|
|
namespace Schema {
|
|
namespace Types {
|
|
/*
|
|
* section schema/array.js
|
|
* http://mongoosejs.com/docs/api.html#schema-array-js
|
|
*/
|
|
class Array extends SchemaType {
|
|
/** Array SchemaType constructor */
|
|
constructor(key: string, cast?: SchemaType, options?: Object);
|
|
|
|
/**
|
|
* Check if the given value satisfies a required validator. The given value
|
|
* must be not null nor undefined, and have a non-zero length.
|
|
*/
|
|
checkRequired<T extends { length: number }>(value: T): boolean;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/string.js
|
|
* http://mongoosejs.com/docs/api.html#schema-string-js
|
|
*/
|
|
class String extends SchemaType {
|
|
/** String SchemaType constructor. */
|
|
constructor(key: string, options?: Object);
|
|
|
|
/** Check if the given value satisfies a required validator. */
|
|
checkRequired(value: any, doc: MongooseDocument): boolean;
|
|
|
|
/**
|
|
* Adds an enum validator
|
|
* @param args enumeration values
|
|
*/
|
|
enum(args: string | string[] | Object): this;
|
|
|
|
/** Adds a lowercase setter. */
|
|
lowercase(): this;
|
|
|
|
/**
|
|
* Sets a regexp validator. Any value that does not pass regExp.test(val) will fail validation.
|
|
* @param regExp regular expression to test against
|
|
* @param message optional custom error message
|
|
*/
|
|
match(regExp: RegExp, message?: string): this;
|
|
|
|
/**
|
|
* Sets a maximum length validator.
|
|
* @param value maximum string length
|
|
* @param message optional custom error message
|
|
*/
|
|
maxlength(value: number, message?: string): this;
|
|
|
|
/**
|
|
* Sets a minimum length validator.
|
|
* @param value minimum string length
|
|
* @param message optional custom error message
|
|
*/
|
|
minlength(value: number, message?: string): this;
|
|
|
|
/** Adds a trim setter. The string value will be trimmed when set. */
|
|
trim(): this;
|
|
/** Adds an uppercase setter. */
|
|
uppercase(): this;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
|
|
}
|
|
|
|
/*
|
|
* section schema/documentarray.js
|
|
* http://mongoosejs.com/docs/api.html#schema-documentarray-js
|
|
*/
|
|
class DocumentArray extends Array {
|
|
/** SubdocsArray SchemaType constructor */
|
|
constructor(key: string, schema: Schema, options?: Object);
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/number.js
|
|
* http://mongoosejs.com/docs/api.html#schema-number-js
|
|
*/
|
|
class Number extends SchemaType {
|
|
/** Number SchemaType constructor. */
|
|
constructor(key: string, options?: Object);
|
|
|
|
/** Check if the given value satisfies a required validator. */
|
|
checkRequired(value: any, doc: MongooseDocument): boolean;
|
|
|
|
/**
|
|
* Sets a maximum number validator.
|
|
* @param maximum number
|
|
* @param message optional custom error message
|
|
*/
|
|
max(maximum: number, message?: string): this;
|
|
|
|
/**
|
|
* Sets a minimum number validator.
|
|
* @param value minimum number
|
|
* @param message optional custom error message
|
|
*/
|
|
min(value: number, message?: string): this;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/date.js
|
|
* http://mongoosejs.com/docs/api.html#schema-date-js
|
|
*/
|
|
class Date extends SchemaType {
|
|
/** Date SchemaType constructor. */
|
|
constructor(key: string, options?: Object);
|
|
|
|
/**
|
|
* Check if the given value satisfies a required validator. To satisfy
|
|
* a required validator, the given value must be an instance of Date.
|
|
*/
|
|
checkRequired(value: any, doc: MongooseDocument): boolean;
|
|
|
|
/** Declares a TTL index (rounded to the nearest second) for Date types only. */
|
|
expires(when: number | string): this;
|
|
|
|
/**
|
|
* Sets a maximum date validator.
|
|
* @param maximum date
|
|
* @param message optional custom error message
|
|
*/
|
|
max(maximum: NativeDate, message?: string): this;
|
|
|
|
/**
|
|
* Sets a minimum date validator.
|
|
* @param value minimum date
|
|
* @param message optional custom error message
|
|
*/
|
|
min(value: NativeDate, message?: string): this;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/buffer.js
|
|
* http://mongoosejs.com/docs/api.html#schema-buffer-js
|
|
*/
|
|
class Buffer extends SchemaType {
|
|
/** Buffer SchemaType constructor */
|
|
constructor(key: string, options?: Object);
|
|
|
|
/**
|
|
* Check if the given value satisfies a required validator. To satisfy a
|
|
* required validator, a buffer must not be null or undefined and have
|
|
* non-zero length.
|
|
*/
|
|
checkRequired(value: any, doc: MongooseDocument): boolean;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
|
|
}
|
|
|
|
/*
|
|
* section schema/boolean.js
|
|
* http://mongoosejs.com/docs/api.html#schema-boolean-js
|
|
*/
|
|
class Boolean extends SchemaType {
|
|
/** Boolean SchemaType constructor. */
|
|
constructor(path: string, options?: Object);
|
|
|
|
/**
|
|
* Check if the given value satisfies a required validator. For a
|
|
* boolean to satisfy a required validator, it must be strictly
|
|
* equal to true or to false.
|
|
*/
|
|
checkRequired(value: any): boolean;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/objectid.js
|
|
* http://mongoosejs.com/docs/api.html#schema-objectid-js
|
|
*/
|
|
class ObjectId extends SchemaType {
|
|
/** ObjectId SchemaType constructor. */
|
|
constructor(key: string, options?: Object);
|
|
|
|
/**
|
|
* Adds an auto-generated ObjectId default if turnOn is true.
|
|
* @param turnOn auto generated ObjectId defaults
|
|
*/
|
|
auto(turnOn: boolean): this;
|
|
|
|
/** Check if the given value satisfies a required validator. */
|
|
checkRequired(value: any, doc: MongooseDocument): boolean;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
/*
|
|
* section schema/decimal128.js
|
|
* http://mongoosejs.com/docs/api.html#schema-decimal128-js
|
|
*/
|
|
class Decimal128 extends SchemaType {
|
|
/** Decimal128 SchemaType constructor. */
|
|
constructor(key: string, options?: Object);
|
|
|
|
/** Check if the given value satisfies a required validator. */
|
|
checkRequired(value: any, doc: MongooseDocument): boolean;
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/mixed.js
|
|
* http://mongoosejs.com/docs/api.html#schema-mixed-js
|
|
*/
|
|
class Mixed extends SchemaType {
|
|
/** Mixed SchemaType constructor. */
|
|
constructor(path: string, options?: Object);
|
|
|
|
/** This schema type's name, to defend against minifiers that mangle function names. */
|
|
static schemaName: string;
|
|
}
|
|
|
|
/*
|
|
* section schema/embedded.js
|
|
* http://mongoosejs.com/docs/api.html#schema-embedded-js
|
|
*/
|
|
class Embedded extends SchemaType {
|
|
/** Sub-schema schematype constructor */
|
|
constructor(schema: Schema, key: string, options?: Object);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* section aggregate.js
|
|
* http://mongoosejs.com/docs/api.html#aggregate-js
|
|
*/
|
|
class Aggregate<T> {
|
|
/**
|
|
* Aggregate constructor used for building aggregation pipelines.
|
|
* Returned when calling Model.aggregate().
|
|
* @param ops aggregation operator(s) or operator array
|
|
*/
|
|
constructor(ops?: Object | any[], ...args: any[]);
|
|
|
|
/** Adds a cursor flag */
|
|
addCursorFlag(flag: string, value: boolean): this;
|
|
|
|
/**
|
|
* Sets the allowDiskUse option for the aggregation query (ignored for < 2.6.0)
|
|
* @param value Should tell server it can use hard drive to store data during aggregation.
|
|
* @param tags optional tags for this query
|
|
*/
|
|
allowDiskUse(value: boolean, tags?: any[]): this;
|
|
|
|
/**
|
|
* Appends new operators to this aggregate pipeline
|
|
* @param ops operator(s) to append
|
|
*/
|
|
append(...ops: Object[]): this;
|
|
|
|
/** Adds a collation. */
|
|
collation(options: CollationOptions): this;
|
|
|
|
/**
|
|
* Sets the cursor option option for the aggregation query (ignored for < 2.6.0).
|
|
* Note the different syntax below: .exec() returns a cursor object, and no callback
|
|
* is necessary.
|
|
* @param options set the cursor batch size
|
|
*/
|
|
cursor(options: Object): this;
|
|
|
|
// If cursor option is on, could return an object
|
|
/** Executes the aggregate pipeline on the currently bound Model. */
|
|
exec(callback?: (err: any, result: T) => void): Promise<T> | any;
|
|
|
|
/** Execute the aggregation with explain */
|
|
explain(callback?: (err: any, result: T) => void): Promise<T>;
|
|
|
|
/**
|
|
* Appends a new custom $group operator to this aggregate pipeline.
|
|
* @param arg $group operator contents
|
|
*/
|
|
group(arg: Object): this;
|
|
|
|
/**
|
|
* Appends a new $limit operator to this aggregate pipeline.
|
|
* @param num maximum number of records to pass to the next stage
|
|
*/
|
|
limit(num: number): this;
|
|
|
|
/**
|
|
* Appends new custom $lookup operator(s) to this aggregate pipeline.
|
|
* @param options to $lookup as described in the above link
|
|
*/
|
|
lookup(options: Object): this;
|
|
|
|
/**
|
|
* Appends a new custom $match operator to this aggregate pipeline.
|
|
* @param arg $match operator contents
|
|
*/
|
|
match(arg: Object): this;
|
|
|
|
/**
|
|
* Binds this aggregate to a model.
|
|
* @param model the model to which the aggregate is to be bound
|
|
*/
|
|
model(model: any): this;
|
|
|
|
/**
|
|
* Appends a new $geoNear operator to this aggregate pipeline.
|
|
* MUST be used as the first operator in the pipeline.
|
|
*/
|
|
near(parameters: Object): this;
|
|
|
|
/**
|
|
* Appends a new $project operator to this aggregate pipeline.
|
|
* Mongoose query selection syntax is also supported.
|
|
* @param arg field specification
|
|
*/
|
|
project(arg: string | Object): this;
|
|
|
|
/**
|
|
* Sets the readPreference option for the aggregation query.
|
|
* @param pref one of the listed preference options or their aliases
|
|
* @param tags optional tags for this query
|
|
*/
|
|
read(pref: string, tags?: Object[]): this;
|
|
|
|
/**
|
|
* Appends new custom $sample operator(s) to this aggregate pipeline.
|
|
* @param size number of random documents to pick
|
|
*/
|
|
sample(size: number): this;
|
|
|
|
/**
|
|
* Appends a new $skip operator to this aggregate pipeline.
|
|
* @param num number of records to skip before next stage
|
|
*/
|
|
skip(num: number): this;
|
|
|
|
/**
|
|
* Appends a new $sort operator to this aggregate pipeline.
|
|
* If an object is passed, values allowed are asc, desc, ascending, descending, 1, and -1.
|
|
* If a string is passed, it must be a space delimited list of path names. The sort order
|
|
* of each path is ascending unless the path name is prefixed with - which will be treated
|
|
* as descending.
|
|
*/
|
|
sort(arg: string | Object): this;
|
|
|
|
/** Provides promise for aggregate. */
|
|
then<TRes>(resolve?: (val: T) => void | TRes | PromiseLike<TRes>,
|
|
reject?: (err: any) => void | TRes | PromiseLike<TRes>): Promise<TRes>;
|
|
|
|
/**
|
|
* Appends new custom $unwind operator(s) to this aggregate pipeline.
|
|
* Note that the $unwind operator requires the path name to start with '$'.
|
|
* Mongoose will prepend '$' if the specified field doesn't start '$'.
|
|
* @param fields the field(s) to unwind
|
|
*/
|
|
unwind(...fields: string[]): this;
|
|
/**
|
|
* Appends new custom $unwind operator(s) to this aggregate pipeline
|
|
* new in mongodb 3.2
|
|
*/
|
|
unwind(...opts: { path: string, includeArrayIndex?: string, preserveNullAndEmptyArrays?: boolean }[]): this;
|
|
}
|
|
|
|
/*
|
|
* section schematype.js
|
|
* http://mongoosejs.com/docs/api.html#schematype-js
|
|
*/
|
|
class SchemaType {
|
|
/** SchemaType constructor */
|
|
constructor(path: string, options?: Object, instance?: string);
|
|
|
|
/**
|
|
* Sets a default value for this SchemaType.
|
|
* Defaults can be either functions which return the value to use as the
|
|
* default or the literal value itself. Either way, the value will be cast
|
|
* based on its schema type before being set during document creation.
|
|
* @param val the default value
|
|
*/
|
|
default(val: any): any;
|
|
|
|
/** Adds a getter to this schematype. */
|
|
get(fn: Function): this;
|
|
|
|
/**
|
|
* Declares the index options for this schematype.
|
|
* Indexes are created in the background by default. Specify background: false to override.
|
|
*/
|
|
index(options: Object | boolean | string): this;
|
|
|
|
/**
|
|
* Adds a required validator to this SchemaType. The validator gets added
|
|
* to the front of this SchemaType's validators array using unshift().
|
|
* @param required enable/disable the validator
|
|
* @param message optional custom error message
|
|
*/
|
|
required(required: boolean, message?: string): this;
|
|
|
|
/** Sets default select() behavior for this path. */
|
|
select(val: boolean): this;
|
|
/** Adds a setter to this schematype. */
|
|
set(fn: Function): this;
|
|
/** Declares a sparse index. */
|
|
sparse(bool: boolean): this;
|
|
/** Declares a full text index. */
|
|
text(bool: boolean): this;
|
|
/** Declares an unique index. */
|
|
unique(bool: boolean): this;
|
|
|
|
/**
|
|
* Adds validator(s) for this document path.
|
|
* Validators always receive the value to validate as their first argument
|
|
* and must return Boolean. Returning false means validation failed.
|
|
* @param obj validator
|
|
* @param errorMsg optional error message
|
|
* @param type optional validator type
|
|
*/
|
|
validate(obj: RegExp | Function | Object, errorMsg?: string,
|
|
type?: string): this;
|
|
}
|
|
|
|
/*
|
|
* section promise.js
|
|
* http://mongoosejs.com/docs/api.html#promise-js
|
|
*/
|
|
/**
|
|
* To assign your own promise library:
|
|
*
|
|
* 1. Typescript does not allow assigning properties of imported modules.
|
|
* To avoid compile errors use one of the options below in your code:
|
|
*
|
|
* - (<any>mongoose).Promise = YOUR_PROMISE;
|
|
* - require('mongoose').Promise = YOUR_PROMISE;
|
|
* - import mongoose = require('mongoose');
|
|
* mongoose.Promise = YOUR_PROMISE;
|
|
*
|
|
* 2. To assign type definitions for your promise library, you will need
|
|
* to have a .d.ts file with the following code when you compile:
|
|
*
|
|
* - import * as Q from 'q';
|
|
* declare module 'mongoose' {
|
|
* type Promise<T> = Q.promise<T>;
|
|
* }
|
|
*
|
|
* - import * as Bluebird from 'bluebird';
|
|
* declare module 'mongoose' {
|
|
* type Promise<T> = Bluebird<T>;
|
|
* }
|
|
*
|
|
* Uses global.Promise by default. If you would like to use mongoose default
|
|
* mpromise implementation (which is deprecated), you can omit step 1 and
|
|
* run npm install @types/mongoose-promise
|
|
*/
|
|
export var Promise: any;
|
|
export var PromiseProvider: any;
|
|
|
|
/*
|
|
* section model.js
|
|
* http://mongoosejs.com/docs/api.html#model-js
|
|
*/
|
|
export var Model: Model<any>;
|
|
interface Model<T extends Document> extends NodeJS.EventEmitter, ModelProperties {
|
|
/**
|
|
* Model constructor
|
|
* Provides the interface to MongoDB collections as well as creates document instances.
|
|
* @param doc values with which to create the document
|
|
* @event error If listening to this event, it is emitted when a document
|
|
* was saved without passing a callback and an error occurred. If not
|
|
* listening, the event bubbles to the connection used to create this Model.
|
|
* @event index Emitted after Model#ensureIndexes completes. If an error
|
|
* occurred it is passed with the event.
|
|
* @event index-single-start Emitted when an individual index starts within
|
|
* Model#ensureIndexes. The fields and options being used to build the index
|
|
* are also passed with the event.
|
|
* @event index-single-done Emitted when an individual index finishes within
|
|
* Model#ensureIndexes. If an error occurred it is passed with the event.
|
|
* The fields, options, and index name are also passed.
|
|
*/
|
|
new(doc?: Object): T;
|
|
|
|
/**
|
|
* Finds a single document by its _id field. findById(id) is almost*
|
|
* equivalent to findOne({ _id: id }). findById() triggers findOne hooks.
|
|
* @param id value of _id to query by
|
|
* @param projection optional fields to return
|
|
*/
|
|
findById(id: Object | string | number,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findById(id: Object | string | number, projection: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findById(id: Object | string | number, projection: Object, options: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
|
|
model(name: string): Model<T>;
|
|
|
|
/**
|
|
* Creates a Query and specifies a $where condition.
|
|
* @param argument is a javascript string or anonymous function
|
|
*/
|
|
$where(argument: string | Function): DocumentQuery<T, T>;
|
|
|
|
/**
|
|
* Performs aggregations on the models collection.
|
|
* If a callback is passed, the aggregate is executed and a Promise is returned.
|
|
* If a callback is not passed, the aggregate itself is returned.
|
|
* @param ... aggregation pipeline operator(s) or operator array
|
|
*/
|
|
aggregate(...aggregations: Object[]): Aggregate<Object[]>;
|
|
aggregate(...aggregationsWithCallback: Object[]): Promise<Object[]>;
|
|
|
|
/** Counts number of matching documents in a database collection. */
|
|
count(conditions: Object, callback?: (err: any, count: number) => void): Query<number>;
|
|
|
|
/**
|
|
* Shortcut for saving one or more documents to the database. MyModel.create(docs)
|
|
* does new MyModel(doc).save() for every doc in docs.
|
|
* Triggers the save() hook.
|
|
*/
|
|
create(docs: any[], callback?: (err: any, res: T[]) => void): Promise<T[]>;
|
|
create(...docs: Object[]): Promise<T>;
|
|
create(...docsWithCallback: Object[]): Promise<T>;
|
|
|
|
/**
|
|
* Adds a discriminator type.
|
|
* @param name discriminator model name
|
|
* @param schema discriminator model schema
|
|
*/
|
|
discriminator<U extends Document>(name: string, schema: Schema): Model<U>;
|
|
|
|
/** Creates a Query for a distinct operation. Passing a callback immediately executes the query. */
|
|
distinct(field: string, callback?: (err: any, res: any[]) => void): Query<any[]>;
|
|
distinct(field: string, conditions: Object,
|
|
callback?: (err: any, res: any[]) => void): Query<any[]>;
|
|
|
|
/**
|
|
* Sends ensureIndex commands to mongo for each index declared in the schema.
|
|
* @param options internal options
|
|
* @param cb optional callback
|
|
*/
|
|
ensureIndexes(callback?: (err: any) => void): Promise<void>;
|
|
ensureIndexes(options: Object, callback?: (err: any) => void): Promise<void>;
|
|
|
|
/**
|
|
* Finds documents.
|
|
* @param projection optional fields to return
|
|
*/
|
|
find(callback?: (err: any, res: T[]) => void): DocumentQuery<T[], T>;
|
|
find(conditions: Object, callback?: (err: any, res: T[]) => void): DocumentQuery<T[], T>;
|
|
find(conditions: Object, projection?: Object | null,
|
|
callback?: (err: any, res: T[]) => void): DocumentQuery<T[], T>;
|
|
find(conditions: Object, projection?: Object | null, options?: Object | null,
|
|
callback?: (err: any, res: T[]) => void): DocumentQuery<T[], T>;
|
|
|
|
|
|
|
|
/**
|
|
* Issue a mongodb findAndModify remove command by a document's _id field.
|
|
* findByIdAndRemove(id, ...) is equivalent to findOneAndRemove({ _id: id }, ...).
|
|
* Finds a matching document, removes it, passing the found document (if any) to the callback.
|
|
* Executes immediately if callback is passed, else a Query object is returned.
|
|
* @param id value of _id to query by
|
|
*/
|
|
findByIdAndRemove(): DocumentQuery<T | null, T>;
|
|
findByIdAndRemove(id: Object | number | string,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findByIdAndRemove(id: Object | number | string, options: {
|
|
/** if multiple docs are found by the conditions, sets the sort order to choose which doc to update */
|
|
sort?: Object;
|
|
/** sets the document fields to return */
|
|
select?: Object;
|
|
}, callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
|
|
/**
|
|
* Issues a mongodb findAndModify update command by a document's _id field. findByIdAndUpdate(id, ...)
|
|
* is equivalent to findOneAndUpdate({ _id: id }, ...).
|
|
* @param id value of _id to query by
|
|
*/
|
|
findByIdAndUpdate(): DocumentQuery<T | null, T>;
|
|
findByIdAndUpdate(id: Object | number | string, update: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findByIdAndUpdate(id: Object | number | string, update: Object,
|
|
options: ModelFindByIdAndUpdateOptions,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
|
|
/**
|
|
* Finds one document.
|
|
* The conditions are cast to their respective SchemaTypes before the command is sent.
|
|
* @param projection optional fields to return
|
|
*/
|
|
findOne(conditions?: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findOne(conditions: Object, projection: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findOne(conditions: Object, projection: Object, options: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
|
|
/**
|
|
* Issue a mongodb findAndModify remove command.
|
|
* Finds a matching document, removes it, passing the found document (if any) to the callback.
|
|
* Executes immediately if callback is passed else a Query object is returned.
|
|
*/
|
|
findOneAndRemove(): DocumentQuery<T | null, T>;
|
|
findOneAndRemove(conditions: Object,
|
|
callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
findOneAndRemove(conditions: Object, options: {
|
|
/**
|
|
* if multiple docs are found by the conditions, sets the sort order to choose
|
|
* which doc to update
|
|
*/
|
|
sort?: Object;
|
|
/** puts a time limit on the query - requires mongodb >= 2.6.0 */
|
|
maxTimeMS?: number;
|
|
/** sets the document fields to return */
|
|
select?: Object;
|
|
}, callback?: (err: any, res: T | null) => void): DocumentQuery<T | null, T>;
|
|
|
|
/**
|
|
* Issues a mongodb findAndModify update command.
|
|
* Finds a matching document, updates it according to the update arg, passing any options,
|
|
* and returns the found document (if any) to the callback. The query executes immediately
|
|
* if callback is passed else a Query object is returned.
|
|
*/
|
|
findOneAndUpdate(): DocumentQuery<T | null, T>;
|
|
findOneAndUpdate(conditions: Object, update: Object,
|
|
callback?: (err: any, doc: T | null, res: any) => void): DocumentQuery<T | null, T>;
|
|
findOneAndUpdate(conditions: Object, update: Object,
|
|
options: ModelFindOneAndUpdateOptions,
|
|
callback?: (err: any, doc: T | null, res: any) => void): DocumentQuery<T | null, T>;
|
|
|
|
/**
|
|
* geoNear support for Mongoose
|
|
* @param GeoJSON point or legacy coordinate pair [x,y] to search near
|
|
* @param options for the qurery
|
|
* @param callback optional callback for the query
|
|
*/
|
|
geoNear(point: number[] | {
|
|
type: string;
|
|
coordinates: number[]
|
|
}, options: {
|
|
/** return the raw object */
|
|
lean?: boolean;
|
|
[other: string]: any;
|
|
}, callback?: (err: any, res: T[], stats: any) => void): DocumentQuery<T[], T>;
|
|
|
|
/**
|
|
* Implements $geoSearch functionality for Mongoose
|
|
* @param conditions an object that specifies the match condition (required)
|
|
* @param options for the geoSearch, some (near, maxDistance) are required
|
|
* @param callback optional callback
|
|
*/
|
|
geoSearch(conditions: Object, options: {
|
|
/** x,y point to search for */
|
|
near: number[];
|
|
/** the maximum distance from the point near that a result can be */
|
|
maxDistance: number;
|
|
/** The maximum number of results to return */
|
|
limit?: number;
|
|
/** return the raw object instead of the Mongoose Model */
|
|
lean?: boolean;
|
|
}, callback?: (err: any, res: T[]) => void): DocumentQuery<T[], T>;
|
|
|
|
/**
|
|
* Shortcut for creating a new Document from existing raw data,
|
|
* pre-saved in the DB. The document returned has no paths marked
|
|
* as modified initially.
|
|
*/
|
|
hydrate(obj: Object): T;
|
|
|
|
/**
|
|
* Shortcut for validating an array of documents and inserting them into
|
|
* MongoDB if they're all valid. This function is faster than .create()
|
|
* because it only sends one operation to the server, rather than one for each
|
|
* document.
|
|
* This function does not trigger save middleware.
|
|
*/
|
|
insertMany(docs: any[], callback?: (error: any, docs: T[]) => void): Promise<T[]>;
|
|
insertMany(doc: any, callback?: (error: any, doc: T) => void): Promise<T>;
|
|
insertMany(...docsWithCallback: Object[]): Promise<T>;
|
|
|
|
/**
|
|
* Executes a mapReduce command.
|
|
* @param o an object specifying map-reduce options
|
|
* @param callbackoptional callback
|
|
*/
|
|
mapReduce<Key, Value>(
|
|
o: ModelMapReduceOption<T, Key, Value>,
|
|
callback?: (err: any, res: any) => void
|
|
): Promise<any>;
|
|
|
|
/**
|
|
* Populates document references.
|
|
* @param docs Either a single document or array of documents to populate.
|
|
* @param options A hash of key/val (path, options) used for population.
|
|
* @param callback Optional callback, executed upon completion. Receives err and the doc(s).
|
|
*/
|
|
populate(docs: Object[], options: ModelPopulateOptions | ModelPopulateOptions[],
|
|
callback?: (err: any, res: T[]) => void): Promise<T[]>;
|
|
populate<T>(docs: Object, options: ModelPopulateOptions | ModelPopulateOptions[],
|
|
callback?: (err: any, res: T) => void): Promise<T>;
|
|
|
|
/** Removes documents from the collection. */
|
|
remove(conditions: Object, callback?: (err: any) => void): Query<void>;
|
|
|
|
/**
|
|
* Updates documents in the database without returning them.
|
|
* All update values are cast to their appropriate SchemaTypes before being sent.
|
|
*/
|
|
update(conditions: Object, doc: Object,
|
|
callback?: (err: any, raw: any) => void): Query<any>;
|
|
update(conditions: Object, doc: Object, options: ModelUpdateOptions,
|
|
callback?: (err: any, raw: any) => void): Query<any>;
|
|
|
|
/** Creates a Query, applies the passed conditions, and returns the Query. */
|
|
where(path: string, val?: Object): Query<any>;
|
|
}
|
|
|
|
interface Document extends MongooseDocument, NodeJS.EventEmitter, ModelProperties {
|
|
/** Signal that we desire an increment of this documents version. */
|
|
increment(): this;
|
|
|
|
/**
|
|
* Returns another Model instance.
|
|
* @param name model name
|
|
*/
|
|
model(name: string): Model<this>;
|
|
|
|
/**
|
|
* Removes this document from the db.
|
|
* @param fn optional callback
|
|
*/
|
|
remove(fn?: (err: any, product: this) => void): Promise<this>;
|
|
|
|
/**
|
|
* Saves this document.
|
|
* @param options options optional options
|
|
* @param options.safe overrides schema's safe option
|
|
* @param options.validateBeforeSave set to false to save without validating.
|
|
* @param fn optional callback
|
|
*/
|
|
save(options?: SaveOptions, fn?: (err: any, product: this, numAffected: number) => void): Promise<this>;
|
|
save(fn?: (err: any, product: this, numAffected: number) => void): Promise<this>;
|
|
|
|
/**
|
|
* Version using default version key. See http://mongoosejs.com/docs/guide.html#versionKey
|
|
* If you're using another key, you will have to access it using []: doc[_myVersionKey]
|
|
*/
|
|
__v?: number;
|
|
}
|
|
|
|
interface SaveOptions {
|
|
safe?: boolean | WriteConcern;
|
|
validateBeforeSave?: boolean;
|
|
}
|
|
|
|
interface WriteConcern {
|
|
j?: boolean;
|
|
w?: number | 'majority' | TagSet;
|
|
wtimeout?: number;
|
|
}
|
|
|
|
interface TagSet {
|
|
[k: string]: string;
|
|
}
|
|
|
|
interface ModelProperties {
|
|
/** Base Mongoose instance the model uses. */
|
|
base: typeof mongoose;
|
|
|
|
/**
|
|
* If this is a discriminator model, baseModelName is the
|
|
* name of the base model.
|
|
*/
|
|
baseModelName: String;
|
|
|
|
/** Collection the model uses. */
|
|
collection: Collection;
|
|
|
|
/** Connection the model uses. */
|
|
db: Connection;
|
|
|
|
/** Registered discriminators for this model. */
|
|
discriminators: any;
|
|
|
|
/** The name of the model */
|
|
modelName: string;
|
|
|
|
/** Schema the model uses. */
|
|
schema: Schema;
|
|
}
|
|
|
|
interface ModelFindByIdAndUpdateOptions {
|
|
/** true to return the modified document rather than the original. defaults to false */
|
|
new?: boolean;
|
|
/** creates the object if it doesn't exist. defaults to false. */
|
|
upsert?: boolean;
|
|
/**
|
|
* if true, runs update validators on this command. Update validators validate the
|
|
* update operation against the model's schema.
|
|
*/
|
|
runValidators?: boolean;
|
|
/**
|
|
* if this and upsert are true, mongoose will apply the defaults specified in the model's
|
|
* schema if a new document is created. This option only works on MongoDB >= 2.4 because
|
|
* it relies on MongoDB's $setOnInsert operator.
|
|
*/
|
|
setDefaultsOnInsert?: boolean;
|
|
/** if multiple docs are found by the conditions, sets the sort order to choose which doc to update */
|
|
sort?: Object;
|
|
/** sets the document fields to return */
|
|
select?: Object;
|
|
/** if true, passes the raw result from the MongoDB driver as the third callback parameter */
|
|
passRawResult?: boolean;
|
|
/** overwrites the schema's strict mode option for this update */
|
|
strict?: boolean;
|
|
/**
|
|
* if true, run all setters defined on the associated model's schema for all fields
|
|
* defined in the query and the update.
|
|
*/
|
|
runSettersOnQuery?: boolean;
|
|
}
|
|
|
|
interface ModelFindOneAndUpdateOptions extends ModelFindByIdAndUpdateOptions {
|
|
/** Field selection. Equivalent to .select(fields).findOneAndUpdate() */
|
|
fields?: Object | string;
|
|
/** puts a time limit on the query - requires mongodb >= 2.6.0 */
|
|
maxTimeMS?: number;
|
|
/** if true, passes the raw result from the MongoDB driver as the third callback parameter */
|
|
passRawResult?: boolean;
|
|
}
|
|
|
|
interface ModelPopulateOptions {
|
|
/** space delimited path(s) to populate */
|
|
path: string;
|
|
/** optional fields to select */
|
|
select?: any;
|
|
/** optional query conditions to match */
|
|
match?: Object;
|
|
/** optional name of the model to use for population */
|
|
model?: string;
|
|
/** optional query options like sort, limit, etc */
|
|
options?: Object;
|
|
/** deep populate */
|
|
populate?: ModelPopulateOptions | ModelPopulateOptions[];
|
|
}
|
|
|
|
interface ModelUpdateOptions {
|
|
/** safe mode (defaults to value set in schema (true)) */
|
|
safe?: boolean;
|
|
/** whether to create the doc if it doesn't match (false) */
|
|
upsert?: boolean;
|
|
/** whether multiple documents should be updated (false) */
|
|
multi?: boolean;
|
|
/**
|
|
* If true, runs update validators on this command. Update validators validate
|
|
* the update operation against the model's schema.
|
|
*/
|
|
runValidators?: boolean;
|
|
/**
|
|
* If this and upsert are true, mongoose will apply the defaults specified in the
|
|
* model's schema if a new document is created. This option only works on MongoDB >= 2.4
|
|
* because it relies on MongoDB's $setOnInsert operator.
|
|
*/
|
|
setDefaultsOnInsert?: boolean;
|
|
/** overrides the strict option for this update */
|
|
strict?: boolean;
|
|
/** disables update-only mode, allowing you to overwrite the doc (false) */
|
|
overwrite?: boolean;
|
|
/** other options */
|
|
[other: string]: any;
|
|
}
|
|
|
|
interface ModelMapReduceOption<T, Key, Val> {
|
|
map: Function | string;
|
|
reduce: (key: Key, vals: T[]) => Val;
|
|
/** query filter object. */
|
|
query?: Object;
|
|
/** sort input objects using this key */
|
|
sort?: Object;
|
|
/** max number of documents */
|
|
limit?: number;
|
|
/** keep temporary data default: false */
|
|
keeptemp?: boolean;
|
|
/** finalize function */
|
|
finalize?: (key: Key, val: Val) => Val;
|
|
/** scope variables exposed to map/reduce/finalize during execution */
|
|
scope?: Object;
|
|
/** it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X default: false */
|
|
jsMode?: boolean;
|
|
/** provide statistics on job execution time. default: false */
|
|
verbose?: boolean;
|
|
readPreference?: string;
|
|
/** sets the output target for the map reduce job. default: {inline: 1} */
|
|
out?: {
|
|
/** the results are returned in an array */
|
|
inline?: number;
|
|
/**
|
|
* {replace: 'collectionName'} add the results to collectionName: the
|
|
* results replace the collection
|
|
*/
|
|
replace?: string;
|
|
/**
|
|
* {reduce: 'collectionName'} add the results to collectionName: if
|
|
* dups are detected, uses the reducer / finalize functions
|
|
*/
|
|
reduce?: string;
|
|
/**
|
|
* {merge: 'collectionName'} add the results to collectionName: if
|
|
* dups exist the new docs overwrite the old
|
|
*/
|
|
merge?: string;
|
|
};
|
|
}
|
|
|
|
interface MapReduceResult<Key, Val> {
|
|
_id: Key;
|
|
value: Val;
|
|
}
|
|
|
|
/*
|
|
* section collection.js
|
|
* http://mongoosejs.com/docs/api.html#collection-js
|
|
*/
|
|
interface CollectionBase extends mongodb.Collection {
|
|
/*
|
|
* Abstract methods. Some of these are already defined on the
|
|
* mongodb.Collection interface so they've been commented out.
|
|
*/
|
|
ensureIndex(...args: any[]): any;
|
|
//find(...args: any[]): any;
|
|
findAndModify(...args: any[]): any;
|
|
//findOne(...args: any[]): any;
|
|
getIndexes(...args: any[]): any;
|
|
//insert(...args: any[]): any;
|
|
//mapReduce(...args: any[]): any;
|
|
//save(...args: any[]): any;
|
|
//update(...args: any[]): any;
|
|
|
|
/** The collection name */
|
|
collectionName: string;
|
|
/** The Connection instance */
|
|
conn: Connection;
|
|
/** The collection name */
|
|
name: string;
|
|
}
|
|
}
|