最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

穰如何合并附加加分模式取决于具体的投入

IT培训 admin 5浏览 0评论

穰如何合并/附加/加分模式取决于具体的投入

我想在Node.js的REST API的用户输入验证。

我有这样的模式,例如:

let schema = Joi.object().keys({
    client: {
      type: Joi.string().valid(["private", "business"]).required().error(JoiCustomErrors)
    },
 });

现在,如果用户填写表单类型为私人的,我想将添加到模式,所以它会看起来像这样:

let schema = Joi.object().keys({
    client: {
      type: Joi.string().valid(["private", "business"]).required().error(JoiCustomErrors),
      a: Joi.string().required().error(JoiCustomErrors)
    },
  });

如果用户在类型字段中填入的业务我想追加B的,而不是(一些选项的例子)。

我努力了:

let b = Joi.string().required().error(JoiCustomErrors);

schema.client.append({b: b}); // 1
schema.client.append(b); // 2
schema.client.b = b; // 3

但没有任何工程,我收到一个未定义的错误:类型错误:无法读取属性“追加”的未定义

回答如下:

这里的窍门是在同一个模式来定义ab规则和他们是否会要求或不添加条件要求。

看看下面的例子:

Joi.object().keys({
    client: Joi.object().keys({
        type: Joi.string().valid([ 'private', 'business' ]).required(),
        a: Joi.string().when('type', { is: 'private', then: Joi.required() }),
        b: Joi.string().when('type', { is: 'business', then: Joi.required() })
    }).nand('a', 'b')
});

此架构使得client.type需要,你已经拥有了它。 ab已被定义为可选的字符串,但是他们利用淳佳的.when()函数来创建基于type值的条件要求。

如果type'private'a是必需的;如果它的'business',需要b

我还添加了一个.nand()修改器client对象,将禁止ab同时存在。

穰如何合并/附加/加分模式取决于具体的投入

我想在Node.js的REST API的用户输入验证。

我有这样的模式,例如:

let schema = Joi.object().keys({
    client: {
      type: Joi.string().valid(["private", "business"]).required().error(JoiCustomErrors)
    },
 });

现在,如果用户填写表单类型为私人的,我想将添加到模式,所以它会看起来像这样:

let schema = Joi.object().keys({
    client: {
      type: Joi.string().valid(["private", "business"]).required().error(JoiCustomErrors),
      a: Joi.string().required().error(JoiCustomErrors)
    },
  });

如果用户在类型字段中填入的业务我想追加B的,而不是(一些选项的例子)。

我努力了:

let b = Joi.string().required().error(JoiCustomErrors);

schema.client.append({b: b}); // 1
schema.client.append(b); // 2
schema.client.b = b; // 3

但没有任何工程,我收到一个未定义的错误:类型错误:无法读取属性“追加”的未定义

回答如下:

这里的窍门是在同一个模式来定义ab规则和他们是否会要求或不添加条件要求。

看看下面的例子:

Joi.object().keys({
    client: Joi.object().keys({
        type: Joi.string().valid([ 'private', 'business' ]).required(),
        a: Joi.string().when('type', { is: 'private', then: Joi.required() }),
        b: Joi.string().when('type', { is: 'business', then: Joi.required() })
    }).nand('a', 'b')
});

此架构使得client.type需要,你已经拥有了它。 ab已被定义为可选的字符串,但是他们利用淳佳的.when()函数来创建基于type值的条件要求。

如果type'private'a是必需的;如果它的'business',需要b

我还添加了一个.nand()修改器client对象,将禁止ab同时存在。

发布评论

评论列表 (0)

  1. 暂无评论