Skip to content

Commit edcf468

Browse files
committed
fix(types): correct return value for Model.exists()
Fix #12094
1 parent e2db583 commit edcf468

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

test/types/models.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,3 +345,16 @@ function gh12100() {
345345

346346
expectType<string>(obj._id);
347347
})();
348+
349+
(async function gh12094() {
350+
const userSchema = new Schema({
351+
name: { type: String, required: true },
352+
email: { type: String, required: true },
353+
avatar: String
354+
});
355+
356+
const User = model('User', userSchema);
357+
358+
const doc = await User.exists({ name: 'Bill' }).orFail();
359+
expectType<Types.ObjectId>(doc._id);
360+
})();

types/models.d.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,11 @@ declare module 'mongoose' {
306306
estimatedDocumentCount(options?: QueryOptions<T>, callback?: Callback<number>): QueryWithHelpers<number, HydratedDocument<T, TMethodsAndOverrides, TVirtuals>, TQueryHelpers, T>;
307307

308308
/**
309-
* Returns a document with its `_id` if at least one document exists in the database that matches
310-
* the given `filter`, and `null` otherwise.
311-
*/
312-
exists(filter: FilterQuery<T>, callback: Callback<Pick<Document<T>, '_id'> | null>): QueryWithHelpers<Pick<Document<T>, '_id'> | null, HydratedDocument<T, TMethodsAndOverrides, TVirtuals>, TQueryHelpers, T>;
313-
exists(filter: FilterQuery<T>): QueryWithHelpers<Pick<Document<T>, '_id'> | null, HydratedDocument<T, TMethodsAndOverrides, TVirtuals>, TQueryHelpers, T>;
309+
* Returns a document with its `_id` if at least one document exists in the database that matches
310+
* the given `filter`, and `null` otherwise.
311+
*/
312+
exists(filter: FilterQuery<T>, callback: Callback<{ _id: InferId<T> } | null>): QueryWithHelpers<Pick<Document<T>, '_id'> | null, HydratedDocument<T, TMethodsAndOverrides, TVirtuals>, TQueryHelpers, T>;
313+
exists(filter: FilterQuery<T>): QueryWithHelpers<{ _id: InferId<T> } | null, HydratedDocument<T, TMethodsAndOverrides, TVirtuals>, TQueryHelpers, T>;
314314

315315
/** Creates a `find` query: gets a list of documents that match `filter`. */
316316
find<ResultDoc = HydratedDocument<T, TMethodsAndOverrides, TVirtuals>>(

0 commit comments

Comments
 (0)