NodeJS joi返回error = null,即使发生错误也是如此

时间:2018-05-24 09:58:13

标签: javascript node.js joi

我正在使用NodeJS运行joi,并且正在尝试验证IBM Watson IoT配置对象。 这是我的架构:

const schema = {
  body: {
    config: Joi.object().keys({
      org: Joi.string().required(),
      type: Joi.string().required(),
      id: Joi.string().required(),
      domain: Joi.string().required(),
      'auth-method': Joi.string().required(),
      'auth-token': Joi.string().required()
    }).required()
  }
};

这是我的检查:

Joi.validate(req.body, schema, { allowUnknown: true }, (err, value) => {
  console.log(err);
});

这会将null作为error返回,表示没有错误,但即使我没有POST向我的身体添加任何参数,也是如此。

基本上我想确保body的{​​{1}}包含有效的JSON对象,如下所示:

HTTP POST

1 个答案:

答案 0 :(得分:0)

您没有将Joi对象传递给validate函数,您应该传递<!DOCTYPE html> <html> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-sanitize/1.6.9/angular-sanitize.js"></script> <body> <div ng-app="myApp" ng-controller="myCtrl as vm"> <input type="checkbox" ng-model="vm.showDetails" /> vm.showDetails <hr> <div ng-bind-html="vm.showDetails ? '<span>asd</span>' : '<span>red</span>'"></div> </div> </body> </html>而不是schema.body.config。如果body和config应该是验证的一部分,你应该用schema包装它们,就像你对config中的所有键一样。