У меня есть код валидатора joi:
city: Joi.string().valid([cities]).required()
и постоянный
const cities = require("../cities");
Я хочу добавить города в валидатор city joi. Потому что когда я тестирую город. внутри города должны находиться только определенные городские значения.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


.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
сообщение ":" дочерние \ "города \" не удается, потому что [\ "города \" должны быть одним из [[объект объекта], [объект объекта], [объект объекта], это дает эту ошибку. Но путь правильный, почему он дает пустой объект массива
Можете выложить код cities.js? Кажется, что экспортированный массив - это массив объектов.
const cities = [{text: "Gondor", value: "gondor", id: 1}, {text: "Mordor", value: "mordor", id: 2}]
Хорошо, я предполагаю, что поле value элемента <option> установлено на city.value, а не на city.name
После этого мне нужно сделать при выборе гондора, я дам ограничение для подгородов. Если выбран gondor gondor = {gondor's subcities}, если другой выбран, другие subcities действительны.
Пожалуйста, проверьте ответ!
Опять же, проверьте ответ. Требуется обновить код. Вы используете ...cities.value, что неправильно.
Пожалуйста, проголосуйте за и примите ответ! Это мне очень поможет :)
Привет и добро пожаловать в StackOverflow! Вы брали тур перед тем, как спросить? Пожалуйста, добавьте дополнительную информацию о своей проблеме и убедитесь, что ваш пример заполнен и поддается проверке!