我写了以下代码。
var ajv = new require('ajv');
ajv.addKeyword('allowNull', {
type: 'null',
metaSchema: {
type: 'boolean'
},
compile: function(allowNullEnable, parentSchema) {
return function(data, dataPath, parentData) {
if (allowNullEnable) {
return true;
} else {
if (parentSchema.type == 'null') {
return true;
} else {
return data === null ? false : true;
}
}
}
}
});
var schema = {
type: "object",
properties: {
file: {
type: "string",
allowNull: true
}
}
};
var data = {
file: null
};
console.log(ajv.validate(schema, data)) // Expected true
但它不起作用。如何编写这样的验证器?
即使 compile 函数总是返回 true,它仍然没有通过验证。
代码可以在 Node-sandbox 中测试: https ://runkit.com/khusamov/59965aea14454f0012d7fec0