diff --git a/src/collections/buildSchema.ts b/src/collections/buildSchema.ts index 20ae38cb37..1de4479087 100644 --- a/src/collections/buildSchema.ts +++ b/src/collections/buildSchema.ts @@ -10,6 +10,7 @@ const buildCollectionSchema = (collection: SanitizedCollectionConfig, config: Sa config, collection.fields, { + draftsEnabled: Boolean(typeof collection?.versions === 'object' && collection.versions.drafts), options: { timestamps: collection.timestamps !== false, ...schemaOptions }, }, ); diff --git a/src/mongoose/buildSchema.ts b/src/mongoose/buildSchema.ts index c011b7d03a..d52407596c 100644 --- a/src/mongoose/buildSchema.ts +++ b/src/mongoose/buildSchema.ts @@ -10,6 +10,7 @@ export type BuildSchemaOptions = { options?: SchemaOptions allowIDField?: boolean disableUnique?: boolean + draftsEnabled?: boolean global?: boolean } @@ -19,11 +20,13 @@ const formatBaseSchema = (field: NonPresentationalField, buildSchemaOptions: Bui const schema: SchemaTypeOptions = { unique: (!buildSchemaOptions.disableUnique && field.unique) || false, required: false, - index: field.index || field.unique || false, + index: field.index || (!buildSchemaOptions.disableUnique && field.unique) || false, }; - if (field.unique && field.localized) { + + if ((schema.unique && (field.localized || buildSchemaOptions.draftsEnabled))) { schema.sparse = true; } + return schema; };