Tôi đã có một tài liệu vênh vang làm việc để tạo tài liệu bằng cách sử dụng dự án Swagger-UI, nhưng tôi đang gặp sự cố nhỏ.Xác định thuộc tính có kiểu dữ liệu hỗn hợp trong Swagger
Mongoose hỗ trợ kiểu dữ liệu Mixed
, cơ bản là đối tượng không có cấu trúc có thể chứa bất kỳ thứ gì. Tuy nhiên, theo đặc điểm của Swagger, các giá trị duy nhất có thể có của một thuộc tính là type
là string
, integer
, number
, boolean
và array
. Tôi đã không thể tìm thấy bất cứ điều gì trong tài liệu, trên Google, hoặc trong các vấn đề mở cho dự án Swagger-Spec trên GitHub mà sẽ cho phép các loại dữ liệu hỗn hợp.
Trong tài liệu Swagger-Spec, nơi chúng xác định các tùy chọn type
, chúng tham chiếu đến dự án JSON-Schema. Theo đặc tả JSON-Schema object
phải là một tùy chọn, nhưng nó không được liệt kê như là một giá trị tiềm năng trong Swagger-Spec.
Có ai biết cách chỉ định trong tài liệu Swagger rằng thuộc tính của mô hình có thể chứa bất kỳ giá trị nào (giá trị nguyên thủy đơn lẻ hoặc đối tượng) không?
Ví dụ
định nghĩa schema Mongoose:
var sampleSchema = new mongoose.Schema({
lookupCodes : { type: [mongoose.Schema.Types.Mixed] },
address: { type: mongoose.Schema.Types.Mixed }
});
mongoose.model('Sample', sampleSchema);
Sử dụng mô hình cầy mangut:
var Sample = mongoose.model('Sample');
var doc = new Sample();
Đây là tất cả các giá trị hợp lệ cho hai thuộc tính định nghĩa:
doc.lookupCodes = ['A', 'B', 3, 4, 5, 'F'];
doc.lookupCodes = ['A', { code: '123' }, 5];
doc.address = '123 Main St., San Jose, CA, 95125';
doc.address = { street: '123 Main St.', city: 'San Jose', state: 'CA', postalCode: '95125'}
Swagger 1.2 tài liệu (đoạn mã):
"models": {
"Sample": {
"properties": {
"lookupCodes": {
"type": "array",
"items": {
"type": "??????"
},
"description": "An array of lookup codes. Codes can be strings, numbers or an object containing the `code` property."
},
"address": {
"type": "??????",
"description": "An address. This value can be a single string, containing all the elements of the address together, or it can be a structured object with each of the elements as separate properties of the object."
},
Tôi chỉ đơn giản là tìm kiếm một cách để cho các nhà phát triển xem tài liệu biết rằng một tài sản cụ thể trong một mô hình có thể chấp nhận/trả lại bất kỳ giá trị (biến nguyên thủy hoặc một đối tượng).
Bạn có thể sửa đổi câu hỏi bằng ví dụ về mô hình như vậy hay không và nơi bạn muốn sử dụng nó (ví dụ loại tham số nào)? Câu hỏi của bạn có chứa các chi tiết mâu thuẫn như giới hạn bạn đang đề cập không áp dụng cho các mô hình, nhưng giải pháp lý thuyết của bạn dường như không phù hợp với những gì bạn đang cố gắng đạt được. – Ron
@webron ví dụ đơn giản nhất sẽ là một thuộc tính duy nhất của mô hình có thể chứa số hoặc chuỗi. mongoose hỗ trợ tùy chọn này bằng cách sử dụng kiểu dữ liệu 'Mixed', nhưng Swagger dường như không có giá trị' type' tương ứng cho phép điều này. –
Tôi không chắc liệu bạn nghĩ 'đối tượng' sẽ giúp ích gì ở đó, điều này làm tôi bối rối. – Ron