【发布时间】:2021-02-05 03:51:02
【问题描述】:
我在使用自定义运算符扩展 joi 类时遇到问题。我想验证 mongodb Id,但扩展对象抛出以下错误:
error: uncaughtException: JoiObj.string(...).objectId is not a function
TypeError: JoiObj.string(...).objectId is not a function
代码如下:
import Joi from 'joi';
import * as mongodb from 'mongodb';
interface ExtendedStringSchema extends Joi.StringSchema {
objectId(): this;
}
interface ExtendedJoi extends Joi.Root {
string(): ExtendedStringSchema;
}
const JoiObj: ExtendedJoi = Joi.extend({
base: Joi.string(),
type: 'objectId',
messages: {
'objectId.invalid': '"{{#label}}" must be a valid mongo id'
},
validate(value, helpers) {
if (!mongodb.ObjectId.isValid(value)) {
return helpers.error('objectId.invalid');
}
return value;
}
});
const objIdSchema = JoiObj.object({
id: JoiObj.string().objectId()
});
我找到了 2 个例子:
https://github.com/sideway/joi/issues/2357
How to extend a module from npm using TypeScript?
但是它们使用的属性与 TS 定义文件中描述的属性不同,因此不起作用。
【问题讨论】:
-
您使用的是哪个
joi和mongodb版本?
标签: javascript node.js typescript joi