Как добавить константу внутри валидатора Joi?

У меня есть код валидатора joi:

city: Joi.string().valid([cities]).required()

и постоянный

const cities = require("../cities");

Я хочу добавить города в валидатор city joi. Потому что когда я тестирую город. внутри города должны находиться только определенные городские значения.

Привет и добро пожаловать в StackOverflow! Вы брали тур перед тем, как спросить? Пожалуйста, добавьте дополнительную информацию о своей проблеме и убедитесь, что ваш пример заполнен и поддается проверке!

Simo 21.09.2018 11:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
438
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

.valid может принимать массив в качестве аргумента. Поскольку ваш cities.js экспортирует массив объектов, вы можете сначала извлечь value из массива объектов и проверить их.

const cities = require("../cities"); // cities is an array.

const cityValues = cities.map(aCity => aCity.value); // extract the value


city: Joi.string().valid(cityValues).required() // pass the array 

сообщение ":" дочерние \ "города \" не удается, потому что [\ "города \" должны быть одним из [[объект объекта], [объект объекта], [объект объекта], это дает эту ошибку. Но путь правильный, почему он дает пустой объект массива

Coder 21.09.2018 10:55

Можете выложить код cities.js? Кажется, что экспортированный массив - это массив объектов.

Anand Undavia 21.09.2018 10:56

const cities = [{text: "Gondor", value: "gondor", id: 1}, {text: "Mordor", value: "mordor", id: 2}]

Coder 21.09.2018 11:02

Хорошо, я предполагаю, что поле value элемента <option> установлено на city.value, а не на city.name

Anand Undavia 21.09.2018 11:07

После этого мне нужно сделать при выборе гондора, я дам ограничение для подгородов. Если выбран gondor gondor = {gondor's subcities}, если другой выбран, другие subcities действительны.

Coder 21.09.2018 11:10

Пожалуйста, проверьте ответ!

Anand Undavia 21.09.2018 11:18

Опять же, проверьте ответ. Требуется обновить код. Вы используете ...cities.value, что неправильно.

Anand Undavia 21.09.2018 11:26

Пожалуйста, проголосуйте за и примите ответ! Это мне очень поможет :)

Anand Undavia 21.09.2018 11:51

Другие вопросы по теме