Ich habe folgende Validierung auf einem meiner TourenHapi/Joi Validierung mit verschachteltem Objekt
payload: {
keywordGroups: Joi.array().items(Joi.object().keys({
language: Joi.string().required(),
containsAny: Joi.array().items(Joi.string()).default([]).when('containsAll', { is: [], then: Joi.required() }),
containsAll: Joi.array().items(Joi.string()).default([]).when('containsAny', { is: [], then: Joi.required() }),
notContainsAll: Joi.array().items(Joi.string()).default([]),
notContainsAny: Joi.array().items(Joi.string()).default([])
})).required(),
}
Ich versuche, es zu machen, so dass containsAny
oder containsAll
mindestens eine Saite aufzunehmen. Wenn containsAny
leer ist, sollte containsAll
mindestens ein Element haben. Und wenn containsAll
leer ist, sollte containsAny
mindestens ein Element enthalten.
Aber es scheint, Joi.when
funktioniert nicht wirklich, wenn es um eine Reihe von Objekten kommt.
Versuchen Sie, Ihre ist: [] für Joi.array(). Länge (0). Die Dokumentation schlägt vor, dass die is-Bedingung ein Joi-Typ sein sollte. https://github.com/hapijs/joi/blob/master/API.md#anywhenref-options – Cuthbert
Ich denke, Sie erstellen hier auch eine zirkuläre Abhängigkeit. Sehen Sie sich diesen Thread an: https://github.com/hapijs/joi/issues/588 – Cuthbert
@Cuthbert Ich denke, meine Hauptfrage war, wie ich diese Felder korrekt referenzieren könnte, da sie sich in einer Reihe von Objekten befinden. –