0

将响应模式添加到利用$merge关键字的 fastify 资源时,出现错误

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

被抛出。

Schema 如下所示,但使用 ajv 或 fastify 中的示例会引发相同的错误。

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

自己的答案中描述的解决方法

4

2 回答 2

0

我找到了一个解决方法:似乎与$merge在任何其他模式中使用时不同,fastify 或 ajv 要求type关键字出现在$merge级别上。

这可能是一个错误,因为它可以从合并的对象中推断出来,并且该方法在$merge用于其他模式时有效。

于 2020-02-18T06:58:04.137 回答
0

序列化程序没有实现 ajv 的模式自定义(因为它是$merge)。默认情况下使用fast -json-stringify 。

您应该使用标准 JSON 模式及其组合关键字

在 fastify v2 中,使用模式的序列化器是不可定制的,所以你应该编写自己的序列化器并使用setReplySerializer.

于 2020-02-18T08:58:02.153 回答