Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在hapi.js中实现Joi验证?_Node.js_Joi_Hapi.js - Fatal编程技术网

Node.js 如何在hapi.js中实现Joi验证?

Node.js 如何在hapi.js中实现Joi验证?,node.js,joi,hapi.js,Node.js,Joi,Hapi.js,我只想在HapiAPI中实现Joi server.route([ { method: 'POST', path: '/login', config: { tags: ['login', 'auth'], auth: false, validate: { payload: payloadValidator,

我只想在
Hapi
API中实现
Joi

server.route([
    {
        method: 'POST',
        path: '/login',
        config: {
            tags: ['login', 'auth'],
            auth: false,
            validate: {
                payload: payloadValidator,
                failAction: (req, h, source, error) => {                                                
                    console.log("Error ::: ", source.details[0].message);
                    return h.response({ code: 0, message: source.details[0].message });                        
                }
            }
        },
        handler: async (request, h) => {
            console.log(request.payload.email);
            console.log(request.payload.password);
            ...                                
        }
    }
]);
听到我呼叫
payloadValidator

const payloadValidator = Joi.object({
    email: Joi.string().required(),
    password: Joi.string().required()
}).options({ allowUnknown: true }); 
实际上,我对hapi是新手,我的代码中缺少了一些东西。有人能帮我解决这个问题吗

所需输出

如果我没有通过
电子邮件
,那么应用程序必须抛出一个错误
email is required
,并且它应该与
password
字段相同

错误:

错误::“电子邮件”是必需的
调试:内部、实现、错误
错误:在处理程序之前调用的生命周期方法只能返回错误、接管响应或继续信号
应请求。_lifecycle(/var/www/html/hapi/node_modules/@hapi/hapi/lib/Request.js:326:33)

在进程中。_tickCallback(internal/process/next_tick.js:68:7)

因为错误提示在处理程序只能返回错误、接管响应或继续信号之前调用的生命周期方法您必须返回接管响应

return h.response({ code: 0, message: source.details[0].message }).takeover();
有关更多信息,请访问此链接: