¿Cómo usar la validación de Yup para encontrar el duplicado de contractNum en la hipoteca existente o en la nueva hipoteca solo o en la hipoteca existente + la nueva hipoteca? Gracias:)
El siguiente es mi objeto de valor formik y esquema de validación:
{ "existingMortgage": [ { "contractNum": "123", "mortgageAmount": "1000" }, { "contractNum": "123", "mortgageAmount": "1001" }, { "contractNum": "456", "mortgageAmount": "1002" } ], "newMortgage": [ { "contractNum": "456", "mortgageAmount": "1003" }, { "contractNum": "789", "mortgageAmount": "1004" } ] }yup.addMethod(yup.array, 'unique', function (field, message) { return this.test('unique', message, function (array) { const uniqueData = Array.from( new Set(array.map((row) => row[field]?.toLowerCase())), ); const isUnique = array.length === uniqueData.length; if (isUnique) { return true; } const index = array.findIndex( (row, i) => row[field]?.toLowerCase() !== uniqueData[i], ); if (array[index][field] === '') { return true; } return this.createError({ path: `${this.path}.${index}.${field}`, message, }); }); });El fragmento de código anterior es para agregar un método único en el esquema yup.array. Puedes usarlo como:
const validationSchema = yup.object({ existingMortgage: yup.array().unique('contractNum', 'Please provide a unique number.'), newMortgage: yup.array().unique('contractNum', 'Please provide a unique number.') });