Javascript 关联模型sailsJs的验证

Javascript 关联模型sailsJs的验证,javascript,validation,sails.js,Javascript,Validation,Sails.js,我正在尝试在sailsjs v0.11.0上构建一个RESTAPI,我正在寻找一种验证所有POST请求的方法。验证适用于简单模型 简单模型示例: category.js 验证无效的关联一对多模型示例: Chapter.js Upload.js 编辑: 我让它与下面更新的Chapter.js模型一起工作,但是如果关联的模型验证失败,sails服务器将以500状态和错误json响应,如下所示,虽然这不是错误,但它应该发送400状态 更新Chapter.js: module.exports = {

我正在尝试在sailsjs v0.11.0上构建一个RESTAPI,我正在寻找一种验证所有POST请求的方法。验证适用于简单模型

简单模型示例: category.js

验证无效的关联一对多模型示例:

Chapter.js

Upload.js

编辑:

我让它与下面更新的Chapter.js模型一起工作,但是如果关联的模型验证失败,sails服务器将以500状态和错误json响应,如下所示,虽然这不是错误,但它应该发送400状态

更新Chapter.js:

module.exports = {
    attributes: {
        name: {
            type: 'string',
            required: true
        },
        categoryId: {
            type: 'integer',
            required: true
        },
        pages: {
            type: 'string',
            required: true
        },
        owner: {
            model: 'Upload'
        }
    }
};
状态为500的错误:

{
  "error": "E_UNKNOWN",
  "status": 500,
  "summary": "Encountered an unexpected error",
  "raw": [
    {
      "type": "insert",
      "collection": "chapter",
      "values": {
        "name": "chapeterOne",
        "pages": "2,3,4,5",
        "owner": 12
      },
      "err": {
        "error": "E_VALIDATION",
        "status": 400,
        "summary": "1 attribute is invalid",
        "model": "Chapter",
        "invalidAttributes": {
          "categoryId": [
            {
              "rule": "integer",
              "message": "`undefined` should be a integer (instead of \"null\", which is a object)"
            },
            {
              "rule": "required",
              "message": "\"required\" validation rule failed for input: null"
            }
          ]
        }
      }
    }
  ]
}

有没有办法使错误消息更合理?

这不起作用不是错误。给我们输入、预期输出和实际输出。@TravisWebb,你能帮我弄一下500状态码吗?你现在说的是另一回事。起初你说这与页面有关,但是你的分类ID验证失败了。其次:这不起作用,Sails接受了这篇文章。如果你发送了一个POST请求,sails将接受它,即使它完全是垃圾。验证器是在服务器上运行的,你需要在服务器上处理错误,然后通知客户机。如果你认为有错误,我会将其归档到waterline存储库中。
module.exports = {

    attributes: {
        draftId: 'integer',
        chapters: {
            collection: 'Chapter',
            via: 'owner'
        }
    }
};
module.exports = {
    attributes: {
        name: {
            type: 'string',
            required: true
        },
        categoryId: {
            type: 'integer',
            required: true
        },
        pages: {
            type: 'string',
            required: true
        },
        owner: {
            model: 'Upload'
        }
    }
};
{
  "error": "E_UNKNOWN",
  "status": 500,
  "summary": "Encountered an unexpected error",
  "raw": [
    {
      "type": "insert",
      "collection": "chapter",
      "values": {
        "name": "chapeterOne",
        "pages": "2,3,4,5",
        "owner": 12
      },
      "err": {
        "error": "E_VALIDATION",
        "status": 400,
        "summary": "1 attribute is invalid",
        "model": "Chapter",
        "invalidAttributes": {
          "categoryId": [
            {
              "rule": "integer",
              "message": "`undefined` should be a integer (instead of \"null\", which is a object)"
            },
            {
              "rule": "required",
              "message": "\"required\" validation rule failed for input: null"
            }
          ]
        }
      }
    }
  ]
}