Joi验证羽毛js

时间:2017-08-25 09:34:59

标签: feathersjs joi

我有一个带有messages service的feathersjs API。我想用feathers-hooks-validate-joi模块验证消息模型。

这是我的messages-hooks.js文件:

const validate = require('feathers-hooks-validate-joi');
const schema = require('./messages.validator');

module.exports = {
  before: {
    create: [validate.form(schema)],
    //others method fields
  },
  after: {...},
  error: {...}
};

这是我的messages.validator.js文件:

const Joi = require('joi');

const schema = Joi.object().keys({
  name: Joi.string().trim().min(2).required(),
  text: Joi.string().trim().min(2).required()
});

module.exports = {schema};

当我尝试通过curl发布消息时:

curl 'http://localhost:3030/messages/' -H 'Content-Type: application/json' --data-binary '{ "name": "Hello", "text": "World" }'

我收到此错误消息:

{
  "name": "BadRequest",
  "message": "Invalid data",
  "code": 400,
  "className": "bad-request",
  "data": {},
  "errors": {
    "name": "\"name\" is not allowed",
    "text": "\"text\" is not allowed"
  }
}

我错过了什么吗?我是否正确使用了羽毛钩?

1 个答案:

答案 0 :(得分:0)

module.exports = {schema};

这应该是:

module.exports = schema;

不应该吗?

或者,您的require语句应更改为:

const {schema } = require('./messages.validator');