как предоставить интерфейс для joi-objectid?

#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 не работает. 🙁 Вы можете попробовать это вместо.

https://www.npmjs.com/package/joi-oid

Ответ №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)

};