AssertionError使用Joi模式定义和来自不同模块的表达式验证

时间:2018-04-06 10:09:27

标签: javascript validation joi

我试图在一个模块中定义我的Joi模式并将其包含在不同的模块中(基本定义旨在在更多模块中共享以避免代码重复)。但似乎某些定义有效,其他则没有。

第1单元

import Joi from 'joi';

const working1 = Joi.string().alphanum().min(3).max(20).required();
const working2 = Joi.string().required().min(5);
const notWorking1 = Joi.number().default(0).min(0);

export default {
  working1,
  working2,
  notWorking1,
};

第2单元

import m from './module1';

export default {
  rule1: {
    body: {
      field1: r.working1,
      field2: r.working2,
    },
  },
};

第3单元

import m from './module1';

export default {
  rule2: {
    query: {
      field1: r.notWorking1,
    },
  },
};

某些验证架构运行良好,而在其他情况下,我得到一个奇怪的错误(例如 module3 )。像这样:

AssertionError [ERR_ASSERTION]: Invalid schema content: (rule2)
{"generatedMessage":false,"name":"AssertionError [ERR_ASSERTION]","code":"ERR_ASSERTION","actual":false,"expected":true,"operator":"==","path":"rule2"}

如果我在 module3 文件中包含验证架构而未从 module1 导入验证架构,则它会按预期工作。

使用快速验证模块将模式包含在ruotes中。

import { Router } from 'express';
import validation from 'express-validation';
import v3 from './module3';
import v2 from './module2';

router.get('/x', validation(v2.rule1), (req, res, next) => ... ); // working
router.get('/y', validation(v3.rule2), (req, res, next) => ... ); // not working

我希望它在任何情况下都有效。我错过了什么吗?

0 个答案:

没有答案