【问题标题】:How are methods of the Joi class called without creating an object?在不创建对象的情况下如何调用 Joi 类的方法?
【发布时间】:2020-12-08 20:11:20
【问题描述】:

我尝试使用 Joi NPM 模块,在文档中它声明它是一个类,但它在使用时没有创建像 var joi = new Joi(); 这样的类对象,这是如何工作的?

我对类的工作原理有一点了解,可以通过创建类实例或将类声明为静态来使用它。下面是代码。

const Joi = require('@hapi/joi');
 function validation(args) {
    const schema = {
        "name": Joi.string().min(3).required()
    };
    return Joi.validate(args,schema);

 }
app.put('/api/courses/:id',(req,res)=>{
    const course = courses1.find(c => c.id === parseInt(req.params.id));
    if(!course){
       res.status(404).send('course not found...');
    }
    else{
        const {error} = validation(req.body);
        if(error){
            res.status(400).send(error.details[0].message);
        }
        else{
            course.name = req.body.name;
            res.status(200).send(courses1);
        }   
    }
});

【问题讨论】:

  • 文档在哪里?它不在 README 或 API 参考中。您是否查看了实现以了解这些方法的作用?
  • 我进行了查找,但没有从中得到太多,因为我是新手,这需要时间,但我很快就会到达那里,如果你能帮助我,那将是一个很大的帮助这个。
  • 如果您的代码有特定问题,请询问,但如果您只是对实现感到好奇,那么它对于 SO 来说太宽泛了;目前还不清楚什么让您感到困惑。
  • 你看到,为了访问类方法,必须创建它的实例,但在这种情况下,Joi 的实例不是像 new Joi() 那样创建的,我怎样才能像 validate 方法一样直接使用它的方法,这就是我要问的问题,这让我的概念有些混乱。
  • 您也不必创建 jQuery 的实例,但您仍然可以在其上调用方法。或者像JSON.stringify 这样的东西。这些是原型上的方法,可以通过多种方式创建。

标签: javascript node.js express joi


【解决方案1】:
// make new component validation.js

const Joi = require('@hapi/joi');


const signupValidation = (data) => {`enter code here`
    const schema = Joi.object({
        name: Joi.string().required(),
        email: Joi.string().required().email(),
       
        password: Joi.string().required(),
        role:Joi.string(),
    })
    return schema.validate(data)
}

module.exports.signupValidation = signupValidation ; 



//now you can import in your required component
import {signupValidation } from './validation'

    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2014-03-10
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多