#javascript #typescript #joi
#javascript #typescript #joi
Вопрос:
Я использую joi для проверки схемы моих объектов. Для проверки objectid у joi есть отдельный пакет joi-objectid. Я использую его для проверки идентификатора объекта. Но недавно, когда я пытаюсь перенести свой код в typescript, joi выдает ошибку о том, что objectid не существует в joi. Поскольку он добавляется во время выполнения, мы не можем получить ссылку. как я могу переопределить типы joi, чтобы он поддерживал функцию objectid.?
Комментарии:
1. Как насчет использования joi.extends()? github.com/hapijs/joi/blob/master/API.md#extendextension
Ответ №1:
Мне пришлось добавить его к отдельным файлам.
import Joi from "joi";
import JoiObjectId from "joi-objectid";
const myJoiObjectId = JoiObjectId(Joi);
export const validateFixture = (input: object) => {
const schema = {
home: myJoiObjectId().required(),
away: myJoiObjectId().required(),
date: Joi.date(),
score: Joi.object(),
stadium: Joi.string().required(),
played: Joi.boolean()
};
return Joi.validate(input, schema);
};
Комментарии:
1. Это привело к ошибке, поскольку отсутствует package @types/joi-objectid
2. Вы можете это проверить npmjs.com/package/joi-objectid вместо немедленного включения используйте определенную переменную. Скажите мне, работает ли это для вас.
Ответ №2:
Joi был обновлен. В новой версии joi-objectid
не работает. 🙁 Вы можете попробовать это вместо.
Ответ №3:
import Joi from "joi";
import JoiObjectId from "joi-objectid";
const Joi.objectId = JoiObjectId(Joi);
const getDataById = (input: object) => {
const validationSchema = {
_id: Joi.objectId().required(),
};
const { error, value } = validationSchema.validate(input)
};