diff --git a/src/collection.ts b/src/collection.ts index 6e4050aede..00bc86de92 100644 --- a/src/collection.ts +++ b/src/collection.ts @@ -292,7 +292,7 @@ export class Collection { * @param options - Optional settings for the command */ async insertMany( - docs: OptionalUnlessRequiredId[], + docs: ReadonlyArray>, options?: BulkWriteOptions ): Promise> { return await executeOperation( @@ -325,7 +325,7 @@ export class Collection { * @throws MongoDriverError if operations is not an array */ async bulkWrite( - operations: AnyBulkWriteOperation[], + operations: ReadonlyArray>, options?: BulkWriteOptions ): Promise { if (!Array.isArray(operations)) { @@ -336,7 +336,7 @@ export class Collection { this.client, new BulkWriteOperation( this as TODO_NODE_3286, - operations as TODO_NODE_3286, + operations, resolveOptions(this, options ?? { ordered: true }) ) ); diff --git a/src/operations/bulk_write.ts b/src/operations/bulk_write.ts index 64c0664b5a..0a855644f0 100644 --- a/src/operations/bulk_write.ts +++ b/src/operations/bulk_write.ts @@ -13,11 +13,11 @@ import { AbstractOperation, Aspect, defineAspects } from './operation'; export class BulkWriteOperation extends AbstractOperation { override options: BulkWriteOptions; collection: Collection; - operations: AnyBulkWriteOperation[]; + operations: ReadonlyArray; constructor( collection: Collection, - operations: AnyBulkWriteOperation[], + operations: ReadonlyArray, options: BulkWriteOptions ) { super(options); diff --git a/src/operations/insert.ts b/src/operations/insert.ts index 6621f6c0e4..71411f68f5 100644 --- a/src/operations/insert.ts +++ b/src/operations/insert.ts @@ -104,9 +104,9 @@ export interface InsertManyResult { export class InsertManyOperation extends AbstractOperation { override options: BulkWriteOptions; collection: Collection; - docs: Document[]; + docs: ReadonlyArray; - constructor(collection: Collection, docs: Document[], options: BulkWriteOptions) { + constructor(collection: Collection, docs: ReadonlyArray, options: BulkWriteOptions) { super(options); if (!Array.isArray(docs)) { diff --git a/test/types/community/collection/bulkWrite.test-d.ts b/test/types/community/collection/bulkWrite.test-d.ts index f47044eb92..49c36539d6 100644 --- a/test/types/community/collection/bulkWrite.test-d.ts +++ b/test/types/community/collection/bulkWrite.test-d.ts @@ -1,6 +1,12 @@ import { expectError } from 'tsd'; -import { type Collection, type Document, MongoClient, ObjectId } from '../../../mongodb'; +import { + type AnyBulkWriteOperation, + type Collection, + type Document, + MongoClient, + ObjectId +} from '../../../mongodb'; // TODO(NODE-3347): Improve these tests to use more expect assertions @@ -45,6 +51,9 @@ const testDocument: TestSchema = { }; const { ...testDocumentWithoutId } = testDocument; +const rd_array: ReadonlyArray> = []; +collectionType.bulkWrite(rd_array); + // insertOne collectionType.bulkWrite([ diff --git a/test/types/community/collection/insertX.test-d.ts b/test/types/community/collection/insertX.test-d.ts index 7ccb6f2085..1f6fa57d8a 100644 --- a/test/types/community/collection/insertX.test-d.ts +++ b/test/types/community/collection/insertX.test-d.ts @@ -46,6 +46,9 @@ const collection = db.collection('testCollection'); const testDoc: OptionalId = { stringField: 'a', fruitTags: [] }; expectType[0]>(testDoc); +const rd_array: ReadonlyArray = []; +await collection.insertMany(rd_array); + const resultOne = await collection.insertOne({ stringField: 'hola', fruitTags: ['Strawberry']