首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs json-schema无法读取架构

nodejs json-schema无法读取架构
EN

Stack Overflow用户
提问于 2012-10-22 06:38:15
回答 1查看 1.6K关注 0票数 1

我有一个express应用,它有一个post方法( post是一个json类型):

Server.js(简化版):

代码语言:javascript
复制
   app.post('/listener/v1/event/', function(req, res) {
            .
            .
            var event = req.body;
            var validator = require("./validator");
            validator.validate(event);
    }

validator.js包含对json的验证:

代码语言:javascript
复制
var jsonschemavalidate = require("json-schema");
var basicSchema = require('fs').readFileSync('./schema.json', 'utf8');

exports.validate = function (event) {
    console.log(jsonschemavalidate.validate(event, basicSchema).errors);
}

schema.json:

代码语言:javascript
复制
{ 
    name : "test",
    type : 'object', 
    properties : { 
        event_id : { type : 'string' }, 
        timestamp : { type : 'string' } 
    }
}

对于输入,我使用curl:

代码语言:javascript
复制
curl -i -X POST -H 'Content-Type: application/json' -d '{"event_id": "NedaleGassss", "timestamp": "a2009321"}' http://localhost:3000/listener/v1/event/

输出如下:

代码语言:javascript
复制
[ { property: '',
    message: 'Invalid schema/property definition {\n    name : "test",\n    type : "object",\n    additionalProperties : false,\n    properties :\n    {\n        event_id            : { type : "string" },\n        timestamp        \t: { type : "string" }\n    }\n}' } ]
EN

回答 1

Stack Overflow用户

发布于 2014-02-25 04:23:31

正如错误所述,您的架构无效。模式也应该是有效的JSON,因此属性和字符串应该用双引号引起来:

代码语言:javascript
复制
{ 
  "name" : "test",
  "type" : "object", 
  "properties"  : { 
    "event_id"  : { "type" : "string" }, 
    "timestamp" : { "type" : "string" } 
  }
}

这应该会起作用(除非你已经在过去的一年里弄明白了)

还有:

代码语言:javascript
复制
var basicSchema = require('fs').readFileSync('./schema.json', 'utf8');

可能会被替换为:

代码语言:javascript
复制
var basicSchema = require('./schema');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13002898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档