fix!: handle custom id logic in mongodb adapter (#9069)

### What?
Moved the logic for copying the data.id to data._id to the mongoose
adapter.

### Why?
If you have any hooks that need to set the `id`, the value does not get
sent to mongodb as you would expect since it was copied before the
beforeValidate hooks.

### How?
Now data._id is assigned only in the mongodb adapter's `create`
function.

BREAKING CHANGES:
When using custom ID fields, if you have any collection hooks for
beforeValidate, beforeChange then `data._id` will no longer be assigned
as this happens now in the database adapter. Use `data.id` instead.
This commit is contained in:
Dan Ribbens
2024-11-08 15:34:19 -05:00
committed by GitHub
parent dc111041cb
commit ee117bb616
6 changed files with 296 additions and 13 deletions

View File

@@ -20,6 +20,10 @@ export const create: Create = async function create(
fields: this.payload.collections[collection].config.fields,
})
if (this.payload.collections[collection].customIDType) {
sanitizedData._id = sanitizedData.id
}
try {
;[doc] = await Model.create([sanitizedData], options)
} catch (error) {