Saya harus memvalidasi nilai demi nilai alih-alih meneruskan seluruh skema untuk beberapa nilai. Berdasarkan dokumen untuk validasi nilai tunggal dari sini

https://hapi.dev/module/joi/

Dan kode contoh ini

const validator: AnySchema = Joi.string().valid('foo', 'bar').required();
const validationResult: ValidationResult = validator.validate('invalid');
const validationError: ValidationError = validationResult.error;

if (validationError) {
    throw validationError;
}

Kode akan menimbulkan kesalahan dengan pesan kesalahan berikut:

ValidationError: "nilai" harus salah satu dari [foo, bar]

Apakah ada cara mudah untuk mengganti "value" dengan nama tertentu? Jadi ketika saya ingin memvalidasi lingkungan pesan kesalahannya mungkin

ValidationError: "lingkungan" harus salah satu dari [pengembangan, produksi, pengujian]

Atau apakah itu hanya mungkin ketika memvalidasi beberapa nilai sekaligus?

joi
3
Question3r 12 April 2020, 13:00

1 menjawab

Jawaban Terbaik

Ada metode any.label(name) yang Anda dapat menggunakan dan mengatur label khusus yang juga akan ditampilkan dalam pesan kesalahan:

any.label(name)

Mengganti nama kunci dalam pesan kesalahan.

  • name - nama kuncinya.
const schema = {
    first_name: Joi.string().label('First Name')
};

Anda cukup melakukan:

const validator: AnySchema = Joi
  .string()
  .label('Foo/Bar') // Change tha label using label method
  .valid('foo', 'bar')
  .required();

const validationResult: ValidationResult = validator.validate('invalid');
const validationError: ValidationError = validationResult.error;

if (validationError) {
    throw validationError;
}

Akan mengeluarkan:

ValidationError: "Foo/Bar" must be one of [foo, bar]
1
Community 20 Juni 2020, 09:12