Wenn ich zwei Felder habe, möchte ich nur überprüfen, wenn mindestens ein Feld eine nicht leere Zeichenfolge ist, aber fehlschlagen, wenn beide Felder leere Zeichenfolgen sind.Verwenden Sie Joi, erfordern eines der beiden Felder nicht leer
So etwas wie dies nicht überprüft
var schema = Joi.object().keys({
a: Joi.string(),
b: Joi.string()
}).or('a', 'b');
Wenn die Validierung gegen
{a: 'aa', b: ''}
Die or
Zustand nur Tests auf das Vorhandensein von entweder Schlüssel a
oder b
, aber tut Test, ob die Bedingung für a
oder b
ist wahr. Joi.string()
wird für leere Zeichenfolgen fehlschlagen.
Hier ist Kern mit einigen Testfälle
http://requirebin.com/?gist=84c49d8b81025ce68cfb
Thanks @ kevin-wu, das funktioniert für mich :) – Brendan
Dies funktioniert, ist aber nicht wirklich skalierbar - wenn Sie zwei Sätze von ihnen hatten Sie vier Alternativen benötigen würden, wenn Sie drei Satz Dann brauchst du acht. Es scheint jedoch keinen besseren Weg zu geben. –