60

バックエンドにオブジェクトの配列を取得しています。各オブジェクトにはサービス名が含まれています。構造は以下のようになります

[{"serviceName":"service1"},
{"serviceName":"service2"},..]

バックエンドで配列を取得するときに、配列内のすべてのオブジェクトに serviceName プロパティがあることを検証したいと考えています。

次のコードを書きましたが、有効な配列を渡しても検証エラーが発生します。

var Joi = require('joi');
var service = Joi.object().keys({
  serviceName: Joi.string().required()
});

var services = Joi.array().ordered(service);

var test = Joi.validate([{serviceName:'service1'},{serviceName:'service2'}],services)

上記のコードの場合、常にメッセージ付きの検証エラーが発生します

"value" at position 1 fails because array must contain at most 1 items
4

5 に答える 5

121

注文されたアイテムを置き換えることは機能します。

let Joi = require('joi')
let service = Joi.object().keys({
  serviceName: Joi.string().required(),
})

let services = Joi.array().items(service)

let test = Joi.validate(
  [{ serviceName: 'service1' }, { serviceName: 'service2' }],
  services,
)

参考までにここをクリック

于 2016-06-10T10:51:02.067 に答える