0
私は次のコードを書いています。AjvにキーワードNullable(またはallowNull)を追加するには?
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
しかし、動作しません。そのようなバリデータを書くには?
コンパイル関数が常にtrueを返しても、それでも検証は成功しません。
コードは、ノード・サンドボックスでテストすることができます。 https://runkit.com/khusamov/59965aea14454f0012d7fec0
スワッガー形式のキーワードを2つ作成する必要があります。 nullableとdescriminatorなど。だから私はこれをキーワードの形で必要としています。スキームは変更できません。 –
これはインラインキーワードで行うことができますが、かなり複雑です。 https://github.com/epoberezkin/ajv/issues/486 – esp
を参照してください。問題を読んでいます。私が正しく理解していれば、解決策はありませんし、そうではありませんか? –