Нужно ли использовать @ hapi / joi с mon goose? - PullRequest
1 голос
/ 22 марта 2020

Нужно ли использовать @hapi/joi с mongoose?

Как я понимаю @hapi/joi используется для проверки HTTP-запроса (заголовки, параметры , тело et c.). @hapi/joi обеспечивает свою собственную проверку схемы. mongoose также обеспечивает свою собственную проверку схемы, но на другом уровне. Если hapi/joi пытается проверить HTTP-запрос, тогда проверка схемы mongoose гарантирует, что данные действительны для вставки в базу данных.

Как видно, обе библиотеки предоставляют свою собственную проверку схем (на разных уровнях) , Требуется дополнительный ресурс, чтобы обе схемы были равны друг другу (это место для ошибок).

Вопрос в том, нужно ли сохранять обе библиотеки и поддерживать две схемы? Или я могу использовать mongoose и их проверку, а @hapi/joi - избыточность?

Заранее спасибо!

Обновление:

Я нашел связанный вопрос , но он все равно не отвечает на мой вопрос: (

1 Ответ

1 голос
/ 22 марта 2020

Вам не нужно использовать пакет проверки схемы, такой как Joi.

Но было бы хорошо использовать оба из них. Они дополняют друг друга.

Joi используется для API, чтобы убедиться, что данные, которые отправляет клиент, действительны. И схема mon goose используется, чтобы гарантировать, что наши данные находятся в правильной форме.

Сценарий, в котором проверка API с Joi имеет смысл:

У нас обычно есть sh пароль пользователя, поэтому в нашей пользовательской схеме параметр пароля maxlength может намного превышать фактическую длину пароля. Таким образом, с помощью Joi мы можем проверить поле пароля, чтобы оно не превышало, например, 10 символов в маршруте входа в систему.

Сценарий, в котором имеет смысл проверка схемы mon goose:

Допустим, клиент отправил действительные данные, возможно, мы забыли установить свойство при создании документа. Если бы у нас не было опции required: true в схеме mon goose для этого поля, документ был бы создан без этого поля.

Также проверка данных клиента в кратчайшие сроки полезна для безопасности и производительности перед попаданием в базу данных.

Единственным недостатком использования обоих является некоторое дублирование проверки. Но, похоже, они создали пакет joi goose для создания схемы mon goose из схемы Joi.

...