2016-06-10 15 views
10

Tôi nhận được một mảng đối tượng để phụ trợ, trong đó mỗi đối tượng có chứa tên dịch vụ. Cấu trúc trông giống như dưới đâyLàm cách nào để xác thực mảng đối tượng bằng Joi?

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

khi tôi nhận được mảng ở backend, tôi muốn xác nhận rằng tất cả các đối tượng trong mảng có tài sản serviceName.

Tôi đã viết mã sau đây, nhưng mặc dù tôi vượt qua mảng hợp lệ, tôi nhận được lỗi xác thực.

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) 

Đối với các mã trên, tôi luôn nhận được sự xác nhận lỗi với thông điệp

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

Trả lời

18

thay thế ra lệnh với mục sẽ làm việc.

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

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

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

để tham khảo nhấp chuột here

Các vấn đề liên quan