使用 AJV 为 Json 架构修改数据

Modify data using AJV for Json Schema

我在 NodeJs 上使用 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 方法完成,尝试使用它但失败了,因为我不知道如何操作(和 return)来自 AJV 自定义关键字的数据值。 是否可以使用 AJV 修改数据?或者还有其他可能的方法吗? 谢谢!

您可以创建一个自定义关键字,其功能可以对数据执行任何操作。

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}

https://runkit.com/embed/cxg0vwqazre3