Skip to content

removeMany throw an error if no items to delete with mongoose v6 #415

Description

@francois-spectre

Mongoose version

6.6.1

Node.js version

16

MongoDB server version

5

Description

In case of a removeMany with a filter query that returns no items, with mongoose v5 I got a success with deletedCount: 0. But with mongoose v6 I get an Error with the message {"acknowledged":true,"deletedCount":0}.

I have investigated and here is the issue:

const res = await beforeQueryHelper(resolveParams);

await beforeQueryHelper(resolveParams) returns:

  • With mongoose v5: { n: 0, ok: 1, deletedCount: 0 }.
  • With mongoose v6: {"acknowledged":true,"deletedCount":0}

Steps to Reproduce

With mongoose V6, do a mutation with a filter that match no items like

await client.mutate({
	variables: {ids: []}, 
	mutation: gql`
		mutation yourEntity($ids: [String]!) {
			removeMany(filter: {
				_operators: {
					_id: { in: $ids }
				}
			}) {
				numAffected
			}
		}
	`
})

Expected Behavior

I expect the same behaviour than with mongoose v5: getting a success response { n: 0, ok: 1, deletedCount: 0 }

They mentioned the change in mongoose v6 in the doc here: https://mongoosejs.com/docs/migrating_to_6.html#mongodb-driver-40

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions