首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Node js joi验证没有像预期的那样工作?

为什么Node js joi验证没有像预期的那样工作?
EN

Stack Overflow用户
提问于 2021-07-19 22:18:46
回答 1查看 164关注 0票数 0

我已经为我的项目实现了joi验证,但它不适用于任何单个字段。无论你传递什么,它都会存储在数据库中,它不会验证任何字段,即使我做了一个验证代码,这里是一个验证代码

代码语言:javascript
复制
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);
        }
    }
}

这是我的路由路径

代码语言:javascript
复制
adminRoute.route('/country/create')
    .post(countryValidator.createCountryValidator, countryController.createCountry);

在这条路径上,我发布了下面的数据,根据验证,这是完全错误的,但它仍然接受所有数据,并且没有抛出任何验证错误

代码语言:javascript
复制
{
    "name":"BR1Z",
    "code":100,
    "status":"1"
}

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-19 23:00:15

schema.validate返回带有error文件的对象(而不是抛出错误)。

代码语言:javascript
复制
...
    const joiRes = schema.validate(req.body, validationOptions);
    if(joiRes.error){
        sendError(res, error, error.code, StatusCodes.INTERNAL_SERVER_ERROR);
    }
...

请参阅:https://joi.dev/api/?v=17.4.1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68442065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档