Укрепить схему ответа с помощью $ merge-throws FST_ERR_SCH_BUILD - PullRequest
0 голосов
/ 18 февраля 2020

При добавлении схемы ответа к ресурсу fastify, использующему ключевое слово $merge, выдается ошибка

FST_ERR_SCH_BUILD: Failed building the schema for GET: /, due error undefined unsupported

.

Схема выглядит следующим образом, но та же ошибка выбрасывается с использованием примеров из ajv или fastify.

response: {
        200: {
            $merge: {
                source: {
                    type: 'object',
                    properties: {
                        foo: { type: 'string' }
                    }
                },
                with: {
                    type: 'object',
                    properties: {
                        bar: { type: 'string' }
                    }
                }
            }
        }
    }

обходной путь, описанный в собственном ответе

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Сериализатор не реализует настройку схемы ajv (как это $merge). Под капотом fast- json -stringify используется по умолчанию.

Вы должны использовать стандартную JSON схему и ее комбинацию ключевых слов .

В fastify v2 сериализатор, использующий схемы, не настраивается, поэтому вы должны написать свой собственный сериализатор и настроить его, используя setReplySerializer.

0 голосов
/ 18 февраля 2020

Я нашел обходной путь для этого: кажется, что в отличие от использования $merge в любой другой схеме, для fasttify или ajv требуется, чтобы ключевое слово type присутствовало на уровне $merge.

Это может быть ошибкой, поскольку она может быть выведена из объединенных объектов, и методология работает при использовании $merge для других схем.

...