Gibt es eine Möglichkeit, eine benutzerdefinierte Nachricht für JSON-Schema (tv4) für einen Fehler bei einem Feld oneOf
festlegen?JSON-Schema benutzerdefinierte Nachricht für oneOf
Ich sah, dass ein Problem für benutzerdefinierte Nachrichten vor etwa einem Jahr here und here geöffnet wurde, aber gibt es eine Möglichkeit, dies für so etwas funktionieren zu lassen?
{
"id": "code",
"description": "Schema for request.body - pin for logging into the bank",
"oneOf": [
{
"type": "string",
"pattern": "^.*\\S.*$"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"pattern": "^(encrypted|not_encrypted)$"
},
"value": {
"type": "string",
"pattern": "^.*\\S.*$"
}
}
}
],
"messages": {
"oneOf": "Code does not match schema"
}
}
als nur Data does not match any schemas from \"oneOf\"
Gegensatz zu sehen, konnte man sehen, Code does not match schema
[EDIT]
ich durch den tv4 Code lese, so gut wie ich kann und ich sehe viel über benutzerdefinierte Fehlermeldungen und Codes, z
defineError: function (codeName, codeNumber, defaultMessage) {
if (typeof codeName !== 'string' || !/^[A-Z]+(_[A-Z]+)*$/.test(codeName)) {
throw new Error('Code name must be a string in UPPER_CASE_WITH_UNDERSCORES');
}
if (typeof codeNumber !== 'number' || codeNumber%1 !== 0 || codeNumber < 10000) {
throw new Error('Code number must be an integer > 10000');
}
if (typeof ErrorCodes[codeName] !== 'undefined') {
throw new Error('Error already defined: ' + codeName + ' as ' + ErrorCodes[codeName]);
}
if (typeof ErrorCodeLookup[codeNumber] !== 'undefined') {
throw new Error('Error code already used: ' + ErrorCodeLookup[codeNumber] + ' as ' + codeNumber);
}
ErrorCodes[codeName] = codeNumber;
ErrorCodeLookup[codeNumber] = codeName;
ErrorMessagesDefault[codeName] = ErrorMessagesDefault[codeNumber] = defaultMessage;
for (var langCode in languages) {
var language = languages[langCode];
if (language[codeName]) {
language[codeNumber] = language[codeNumber] || language[codeName];
}
}
},
Ich kann meine eigenen Fehler mit einer eigenen Statuscode (über diese Funktion) durch eine einfache Linie tv4.defineError('MY_CUSTOM_CODE_ERROR', 999999, "Hello World, you have a custom code error");
hinzufügen. Wie verknüpfe ich diesen Fehler mit diesem spezifischen JSON-Schema? Und wenn ich komplett am falschen Ort bin, dann zeigt jemand das auch bitte
Abgesehen von der Tatsache, dass das Merkmal aus der Beschreibung fehlt, die [Fehler Reporter] (https://github.com/geraintluff/tv4/blob/master/source/error-reporter.js) scheint einfach die Nachricht aus einem [einfachen Wörterbuch] (https://github.com/geraintluff/tv4/blob /master/source/api.js#L136) (standardmäßig auf [englische Nachrichten] (https://github.com/geraintluff/tv4/blob/master/source/api.js#L42)). –