我在NodeJ上使用AJV(另一个Json模式验证器)。
我有以下架构
var schema = {
"$id": "testSchema.json",
"type": "object",
"$schema": "http://json-schema.org/draft-06/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"type": "integer"
},
"userName": {
"type": "string"
},
"uniqueID": {
"type": "integer"
}
}
}
我需要用一个我可能以某种方式传递给Json模式或AJV的值来覆盖unqiueID
属性。
我认为以上可以使用AJV addKeyword方法完成,尝试使用它但失败了因为我不知道如何操纵(并返回)来自AJV自定义关键字的数据值。
可以用AJV修改数据吗?还是有其他可能的方法吗?
谢谢!
答案 0 :(得分:2)
您可以使用可以执行任何数据操作的函数创建自定义关键字。
var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true});
ajv.addKeyword('my_id_rewrite', {
type: 'object',
compile: function (sch, parentSchema) {
return function (data) {
console.log(data)
data['my_id']=parentSchema.my_id_rewrite;
return true;
}
}
});
var schema = { "my_id_rewrite": 2 };
var validate = ajv.compile(schema);
o = {"my_id":1}
console.log(validate(o)); // true
console.log(o); // Object {my_id: 2}