TypeScript Joi:属性 'validate' 在类型 'Root' 上不存在
TypeScript Joi: Property 'validate' does not exist on type 'Root'
我不明白为什么我收到错误 Property 'validate' does not exist on type 'Root'.ts(2339)
和 Parameter 'err' implicitly has an 'any' type.ts(7006)
我导入了 "@hapi/joi": "^17.0.0" 和 "@types/hapi__joi": "^16.0.6"
import Joi from '@hapi/joi';
import { NextFunction, Request, Response } from 'express';
import { WriteError } from 'mongodb';
import sha1 from 'sha1';
import { user } from '../models/user';
class Home {
static index = async (req: Request, res: Response, next: NextFunction) => {
try {
const schema = Joi.object().keys({
email: Joi.string()
.lowercase()
.trim()
.max(320)
.email({ minDomainSegments: 2 })
.required(),
fullName: Joi.string()
.trim()
.max(70)
.required(),
password: Joi.string()
.trim()
.min(8)
.max(70)
.required(),
});
const { email, password, fullName } = req.body;
Joi.validate({ email, password, fullName }, schema, (err, val) => {
// ^ Error Error ^ ^ Error
if (err) {
throw new Error('Failed to validate input ' + err.details[0].message);
}
req.body = val;
next();
});
} catch (error) {
res.status(400).send({
code: sha1('validateJoin' + error.message || 'Internal Server Error'),
error: error.message || 'Internal Server Error',
});
}
};
}
export { Home };
要验证,您可以使用以下代码:
schema.validateAsync({ email, password, fullName }).then(val => {
req.body = val;
}).catch(err => {
throw new Error('Failed to validate input ' + err.details[0].message);
})
希望成功
我不明白为什么我收到错误 Property 'validate' does not exist on type 'Root'.ts(2339)
和 Parameter 'err' implicitly has an 'any' type.ts(7006)
我导入了 "@hapi/joi": "^17.0.0" 和 "@types/hapi__joi": "^16.0.6"
import Joi from '@hapi/joi';
import { NextFunction, Request, Response } from 'express';
import { WriteError } from 'mongodb';
import sha1 from 'sha1';
import { user } from '../models/user';
class Home {
static index = async (req: Request, res: Response, next: NextFunction) => {
try {
const schema = Joi.object().keys({
email: Joi.string()
.lowercase()
.trim()
.max(320)
.email({ minDomainSegments: 2 })
.required(),
fullName: Joi.string()
.trim()
.max(70)
.required(),
password: Joi.string()
.trim()
.min(8)
.max(70)
.required(),
});
const { email, password, fullName } = req.body;
Joi.validate({ email, password, fullName }, schema, (err, val) => {
// ^ Error Error ^ ^ Error
if (err) {
throw new Error('Failed to validate input ' + err.details[0].message);
}
req.body = val;
next();
});
} catch (error) {
res.status(400).send({
code: sha1('validateJoin' + error.message || 'Internal Server Error'),
error: error.message || 'Internal Server Error',
});
}
};
}
export { Home };
要验证,您可以使用以下代码:
schema.validateAsync({ email, password, fullName }).then(val => {
req.body = val;
}).catch(err => {
throw new Error('Failed to validate input ' + err.details[0].message);
})
希望成功