我已经为我的项目实现了joi验证,但它不适用于任何单个字段。无论你传递什么,它都会存储在数据库中,它不会验证任何字段,即使我做了一个验证代码,这里是一个验证代码
import * as Joi from "joi";
import { Request, Response, NextFunction } from 'express';
import { StatusCodes } from 'http-status-codes';
import { sendError } from "../responseHelper";
import { validationOptions } from "./_index";
export class CountryValidator {
public async createCountryValidator(req: Request, res: Response, next: NextFunction) {
try {
const schema = Joi.object({
id: Joi.number().required(),
name: Joi.string().required(),
code: Joi.string().required(),
status: Joi.number().valid(0, 1).required(),
});
schema.validate(req.body, validationOptions);
next();
} catch (error) {
sendError(res, error, error.code, StatusCodes.INTERNAL_SERVER_ERROR);
}
}
}这是我的路由路径
adminRoute.route('/country/create')
.post(countryValidator.createCountryValidator, countryController.createCountry);在这条路径上,我发布了下面的数据,根据验证,这是完全错误的,但它仍然接受所有数据,并且没有抛出任何验证错误
{
"name":"BR1Z",
"code":100,
"status":"1"
}有人能帮我解决这个问题吗?
发布于 2021-07-19 23:00:15
schema.validate返回带有error文件的对象(而不是抛出错误)。
...
const joiRes = schema.validate(req.body, validationOptions);
if(joiRes.error){
sendError(res, error, error.code, StatusCodes.INTERNAL_SERVER_ERROR);
}
...https://stackoverflow.com/questions/68442065
复制相似问题