diff --git a/mongoose/mongoose-tests.ts b/mongoose/mongoose-tests.ts index 8e4fa4a1ef..1c075b6cc0 100644 --- a/mongoose/mongoose-tests.ts +++ b/mongoose/mongoose-tests.ts @@ -196,6 +196,18 @@ QCModel.find({}).cursor({}).on('data', function (doc: any) { }).on('error', function (error: any) { throw error; }).close().then(cb).catch(cb); +querycursor.map(function (doc) { + doc.foo = "bar"; + return doc; +}).on('data', function (doc: any) { + console.log(doc.foo); +}); +querycursor.map(function (doc) { + doc.foo = "bar"; + return doc; +}).next(function (error, doc) { + console.log(doc.foo); +}); /* * section virtualtype.js @@ -257,8 +269,18 @@ schema.plugin(function (schema, opts) { schema.get('path'); opts.hasOwnProperty(''); }).plugin(cb, {opts: true}); -schema.post('post', function (doc) {}).post('post', function (doc, next) { +schema +.post('save', function (error, doc, next) { + error.stack; + doc.model; + next.apply; +}) +.post('save', function (doc: mongoose.Document, next: Function) { + doc.model; next(new Error()); +}) +.post('save', function (doc: mongoose.Document) { + doc.model; }); schema.queue('m1', [1, 2, 3]).queue('m2', [[]]); schema.remove('path'); diff --git a/mongoose/mongoose.d.ts b/mongoose/mongoose.d.ts index 1b1cba3e8c..025d543163 100644 --- a/mongoose/mongoose.d.ts +++ b/mongoose/mongoose.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Mongoose 4.6.8 +// Type definitions for Mongoose 4.7.0 // Project: http://mongoosejs.com/ // Definitions by: simonxca , horiuchi // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -496,11 +496,17 @@ declare module "mongoose" { */ eachAsync(fn: (doc: T) => any, callback?: (err: any) => void): Promise; + /** + * 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) => void): Promise; + next(callback?: (err: any, doc?: T) => void): Promise; } /* @@ -563,6 +569,12 @@ declare module "mongoose" { /** 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. @@ -597,9 +609,13 @@ declare module "mongoose" { * @param method name of the method to hook * @param fn callback */ - post(method: string, fn: (doc: T) => void, ...args: any[]): this; - post(method: string, fn: (doc: T, next: (err?: NativeError) => void, - ...otherArgs: any[]) => void): this; + post(method: string, fn: ( + error: mongodb.MongoError, doc: T, next: (err?: NativeError) => void + ) => void): this; + + post(method: string, fn: ( + doc: T, next: (err?: NativeError) => void + ) => void): this; /** * Defines a pre hook for the document.