Skip to content

Commit 4b069e8

Browse files
authored
Merge pull request #14196 from Automattic/vkarpov15/gh-14190
Fix return types for findByIdAndDelete overrides
2 parents 3bd67a8 + 2c3697f commit 4b069e8

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

Diff for: test/types/queries.test.ts

+25-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
ProjectionFields,
1818
QueryOptions
1919
} from 'mongoose';
20-
import { ObjectId } from 'mongodb';
20+
import { ModifyResult, ObjectId } from 'mongodb';
2121
import { expectAssignable, expectError, expectNotAssignable, expectType } from 'tsd';
2222
import { autoTypedModel } from './models.test';
2323
import { AutoTypedSchemaType } from './schema.test';
@@ -520,3 +520,27 @@ function gh13630() {
520520
const x: UpdateQueryKnownOnly<User> = { $set: { name: 'John' } };
521521
expectAssignable<UpdateQuery<User>>(x);
522522
}
523+
524+
function gh14190() {
525+
const userSchema = new Schema({ name: String, age: Number });
526+
const UserModel = model('User', userSchema);
527+
528+
const doc = await UserModel.findByIdAndDelete('0'.repeat(24));
529+
expectType<ReturnType<(typeof UserModel)['hydrate']> | null>(doc);
530+
531+
const res = await UserModel.findByIdAndDelete(
532+
'0'.repeat(24),
533+
{ includeResultMetadata: true }
534+
);
535+
expectAssignable<
536+
ModifyResult<ReturnType<(typeof UserModel)['hydrate']>>
537+
>(res);
538+
539+
const res2 = await UserModel.find().findByIdAndDelete(
540+
'0'.repeat(24),
541+
{ includeResultMetadata: true }
542+
);
543+
expectAssignable<
544+
ModifyResult<ReturnType<(typeof UserModel)['hydrate']>>
545+
>(res2);
546+
}

Diff for: types/models.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -564,8 +564,8 @@ declare module 'mongoose' {
564564
'findOneAndDelete'
565565
>;
566566
findByIdAndDelete<ResultDoc = THydratedDocumentType>(
567-
id?: mongodb.ObjectId | any,
568-
options?: QueryOptions<TRawDocType> & { includeResultMetadata: true }
567+
id: mongodb.ObjectId | any,
568+
options: QueryOptions<TRawDocType> & { includeResultMetadata: true }
569569
): QueryWithHelpers<ModifyResult<ResultDoc>, ResultDoc, TQueryHelpers, TRawDocType, 'findOneAndDelete'>;
570570
findByIdAndDelete<ResultDoc = THydratedDocumentType>(
571571
id?: mongodb.ObjectId | any,

Diff for: types/query.d.ts

+4
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,10 @@ declare module 'mongoose' {
415415
): QueryWithHelpers<DocType | null, DocType, THelpers, RawDocType, 'findOne'>;
416416

417417
/** Creates a `findByIdAndDelete` query, filtering by the given `_id`. */
418+
findByIdAndDelete(
419+
id: mongodb.ObjectId | any,
420+
options: QueryOptions<DocType> & { includeResultMetadata: true }
421+
): QueryWithHelpers<ModifyResult<DocType>, DocType, THelpers, RawDocType, 'findOneAndDelete'>;
418422
findByIdAndDelete(
419423
id?: mongodb.ObjectId | any,
420424
options?: QueryOptions<DocType> | null

0 commit comments

Comments
 (0)