diff --git a/lib/validator.js b/lib/validator.js index bb261d52..77bbd101 100644 --- a/lib/validator.js +++ b/lib/validator.js @@ -21,8 +21,8 @@ class Validator { keyword: 'fjs_type', type: 'object', errors: false, - validate: (_type, date) => { - return date instanceof Date + validate: (_type, data) => { + return data && typeof data.toJSON === 'function' } }) @@ -51,8 +51,10 @@ class Validator { return this.ajv.validate(schemaRef, data) } - // Ajv does not support js date format. In order to properly validate objects containing a date, - // it needs to replace all occurrences of the string date format with a custom keyword fjs_type. + // Ajv does not natively support JavaScript objects like Date or other types + // that rely on a custom .toJSON() representation. To properly validate schemas + // that may contain such objects (e.g. Date, ObjectId, etc.), we replace all + // occurrences of the string type with a custom keyword fjs_type // (see https://github.com/fastify/fast-json-stringify/pull/441) convertSchemaToAjvFormat (schema) { if (schema === null) return