Почему {stripUnknown: true} не удаляет неизвестные свойства при проверке с помощью Yup?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему {stripUnknown: true} не удаляет неизвестные свойства при проверке с помощью Yup?

Сообщение Anonymous »

У меня есть следующая схема «Да», которую я использую неоднократно:

Код: Выделить всё

const loginYupSchemaSpam: Yup.AnySchema = Yup.object().shape({
email: Yup.string()
.required()
.strict()
.email()
.max(320),
password: Yup.string()
.required()
.strict()
.min(8)
.max(18)
.matches(
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])/
)
.trim()
.matches(
/^(?!.*  )/
)
})
.noUnknown(true)
.strict()
Иногда мне нужно, чтобы он подтвердил ложность/выдал ошибку, если в проверенном объекте есть дополнительные (неизвестные) свойства, а иногда он должен игнорировать дополнительные (неизвестные) свойства.
Поэтому я подумал, что нет необходимости менять или создавать дополнительную схему, если я использую {stripUnknown: true, как в следующем коде:

Код: Выделить всё

            if (!loginYupSchemaSpam.isValidSync(credentials, { stripUnknown: true })) {
errorTracker = true
return setError('Email or password is wrong')
}
Я так и думал, что .noUnknown(true) внутри схемы не вызовет никаких проблем, если я добавлю дополнительные (неизвестные) свойства в объект учетных данных, потому что они будут удалены перед проверкой.
Но я был неправ, я все равно получаю сообщение об ошибке о наличии неизвестных свойств.
Я уже пытался удалить .strict(), потому что я подумал, может быть, он не может ничего удалить, потому что Strip не позволяет изменять проверенный объект в любом случае.
Мне показалось бы очень странным, если бы я не чего-то не упустил, потому что я чувствую, что переданные параметры должны иметь более высокий приоритет, чем сама схема, иначе зачем вообще разрешать параметры в первую очередь.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ating-with
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»