簡體   English   中英

ArangoDB Joi Foxx到Swagger的映射不正確

[英]ArangoDB Joi Foxx mapping to Swagger is incorrect

我在joi語法上定義了一個稱為TestBean的bean。 然后定義另一個使用TestBean模式/ bean的bean BeanMethodDocument。 生成的Swagger / model會忽略此參數,但是用TestBean定義的數組有效嗎?

以下JOI語法似乎丟失了TestBean定義:“ arg:joi.object()。schema(TestBean).required(),”

'use strict';
var createRouter = require('@arangodb/foxx/router');
var joi = require('joi');
var router = createRouter();

module.context.use(router);

const TestBean = joi.object().required().keys({
    member1: joi.array().items(joi.string().required()),
    member2: joi.number().required()
});

const BeanMethodDocument = joi.object().required().keys({
    arg: joi.object().schema(TestBean).required(),
    argArray: joi.array().items(TestBean).required(),
    option: joi.string().valid('Empty','Full','HalfFull','HalfEmpty')
});


router.post('/beanMethod', function (req, res) {
    const arg = req.body.arg;
    const argArray = req.body.argArray;
    const option = req.body.option;

    res.send({result:true});
})
    .body(BeanMethodDocument, 'beanMethod POST request')
    .response(joi.boolean().required(), 'beanMethod POST response')
    .summary('beanMethod summary')
    .description('beanMethod description');

生成的Swagger文檔將arg參數顯示為空嗎? “ arg”:{
“ type”:“對象”,
“屬性”:{},
“ additionalProperties”:false},

根據JOI文檔( https://github.com/hapijs/joi/blob/v15.1.0/API.md#objectschema ),在那里使用的架構函數確實會返回當前對象的架構,但不會對其進行設置。 您可以代替joi.object()那樣簡單地使用TestBean:

const BeanMethodDocument = joi.object().required().keys({
  arg: TestBean.required(),
  argArray: joi.array().items(TestBean).required(),
  option: joi.string().valid('Empty','Full','HalfFull','HalfEmpty')
});

在我的本地測試中,這項工作最終會導致:

{
  "arg": {
    "member1": [
      "string"
    ],
    "member2": 0
  },
  "argArray": [
    {
       "member1": [
         "string"
       ],
       "member2": 0
    }
  ],
  "option": "Empty"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM